C# での大きなテキスト ファイルの読み取り: File.ReadLines()
と File.ReadAllLines()
File.ReadLines()
と File.ReadAllLines()
はどちらもテキスト ファイルを読み取るための C# のメソッドですが、パフォーマンスは大きく異なります。
File.ReadAllLines()
File.ReadAllLines()
は、ファイル全体を一度にメモリに読み取り、文字列配列を返します。この方法は小さなファイルには効率的ですが、大きなファイルには問題があります。ファイル サイズが大きくなると、ファイル全体の読み取りと処理に必要な時間が大幅に増加します。さらに、File.ReadAllLines()
は、特にギガバイトサイズのファイルを扱う場合に大量のメモリを消費します。
File.ReadLines()
File.ReadLines()
は、遅延読み込みを通じて File.ReadAllLines()
の制限を解決します。ファイル全体を一度にメモリに読み取る代わりに、必要に応じてファイルの各行を反復処理できる IEnumerable<string>
を返します。このアプローチにより、メモリ使用量が削減され、大きなファイルを処理する際のパフォーマンスが向上します。
パフォーマンスの比較
ベンチマークは、大きなファイルの場合、File.ReadLines()
が File.ReadAllLines()
よりも優れたパフォーマンスを示すことを示しています。この違いは、ファイル サイズが大きくなるほど顕著になります。たとえば、File.ReadAllLines()
を使用して 100 MB のファイルを読み取るには数秒かかる場合がありますが、File.ReadLines()
は 1 秒未満でタスクを完了できます。
使用例
File.ReadLines()
を使用してファイルを読み取ります:
<code class="language-csharp">using System.IO; string path = "C:\mytxt.txt"; foreach (var line in File.ReadLines(path)) { // 处理每一行 }</code>
File.ReadAllLines()
を使用してファイルを読み取ります:
<code class="language-csharp">using System.IO; string path = "C:\mytxt.txt"; string[] lines = File.ReadAllLines(path); // 处理所有行</code>
結論
大きなテキスト ファイルの場合、File.ReadLines()
は File.ReadAllLines()
よりもパフォーマンスに大きな利点があります。遅延読み込みにより、File.ReadLines()
はメモリ消費を削減し、効率を犠牲にすることなく処理速度を向上させます。
以上が`File.ReadLines()` と `File.ReadAllLines()`: C# で大きなテキスト ファイルを読み取るにはどちらが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。