c#で大規模なテキストファイルを読む:ストリーミング最適化テクノロジー
大きなテキストファイルを処理する場合、アプリケーションにファイルをロードするとボトルネックになる場合があります。この記事では、このプロセスの効率を改善するために、フローとさまざまな最適化テクノロジーの使用方法について説明します。
最適化された戦略:
StreamReaderは、読み取り操作を大幅に高速化できます。次のコードの例では、bufferedstreamはFilestreamとStreamReaderの中間体として使用されます。
このメソッドは、データが遅いため、バッファーにあるため、オペレーティングシステムの呼び出しの数を減らします。 最大ファイルの場合、TPLデータフローの生産者/消費者モデルはパフォーマンスをさらに向上させることができます。このモードでは、1つの個別のスレッドを使用してテキスト行を読み取り、もう1つのスレッドはこれらの行を処理するために使用されます。並列性を使用することにより、この方法はスケーラビリティを大幅に改善できます。
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string line;
while ((line = sr.ReadLine()) != null)
{
//在此处处理行
}
}
既知のフローの長さを適切な容量を使用して初期化できる場合、StringBuilderを初期化して、追加中のサイズ調整操作を回避できます。これにより、メモリの割り当てを節約し、パフォーマンスを改善できます。 その他の注意事項:
UI応答を確保するための背景ワークスレッド:
バックグラウンドワークスレッドでの読み取り操作の実行により、メインのUIスレッドが維持されるようにします。処理ライン文字:
ファイルのコンテンツを処理するときは、UNIXまたはDOS行の端子端子の存在を考慮してください。 これらの最適化テクノロジーを達成することにより、大規模なテキストファイルを処理するときにアプリケーションのパフォーマンスを大幅に改善できます。
以上がStream Optimization Techniqueは、C#の大きなテキストファイルの読み取りを改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。