ホームページ >バックエンド開発 >C++ >C#で行ごとにテキストファイルを効率的に読み取るにはどうすればよいですか?

C#で行ごとにテキストファイルを効率的に読み取るにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-29 08:27:09932ブラウズ

How Can I Efficiently Read Text Files Line by Line in C#?

c#テキストファイルを効率的に読み取ります

.NET C#環境では、テキストファイルを1つずつ読み取ることは一般的なタスクです。この記事では、いくつかの異なる方法を調査し、その効率を分析します。

StreamReader.Readline

を使用します

現在のメソッドはを使用し、バッファサイズは128に設定されています。ただし、ベンチマークテストでは、バッファのサイズを1024(デフォルト)または4096(NTFSクラスター)に増やすと、パフォーマンスが大幅に向上することが示されています。次のコードフラグメントは、これを示しています:

file.readlines StreamReader.ReadLine

を使用します この方法は、バッファ領域の小さい
<code class="language-csharp">const Int32 BufferSize = 128;
using (var fileStream = File.OpenRead(fileName))
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) {
    String line;
    while ((line = streamReader.ReadLine()) != null)
    {
      // 处理每一行
    }
}</code>
と比較して、内部的に

を使用しますが、パフォーマンスが向上します。イテレーターを使用し、メモリ消費を削減します。

file.readalllines

StreamReaderを使用します StreamReader.ReadLineはに似ていますが、

の代わりに文字列配列を返します。この方法では、より多くのメモリが必要ですが、ランダムアクセスが可能です。
<code class="language-csharp">var lines = File.ReadLines(fileName);
foreach (var line in lines)
  // 处理每一行</code>

string.split

を使用します

は非常に便利ですが、大きなファイルを読むと、次の例に示すように、その速度は大幅に遅くなります。 File.ReadLines IEnumerable<string>結論

<code class="language-csharp">var lines = File.ReadAllLines(fileName);
for (var i = 0; i < lines.Length; i++)
  // 处理每一行</code>
要するに、テキストファイルを1つずつ読み取るためには、そのシンプルさと効率のために推奨されます。共有オプションをカスタマイズする必要がある場合は、適切なバッファサイズを使用して

を使用することを検討してください。ただし、特定のニーズに最も適したソリューションを決定するために、ベンチマークテストを実行する必要があります。

以上がC#で行ごとにテキストファイルを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。