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

.NET で大きなテキスト ファイルを効率的に読み取るにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 10:03:40363ブラウズ

How Can I Efficiently Read a Large Text File in .NET?

.NET で大きなテキスト ファイルを効率的に読み取る

大規模なテキスト ファイルを処理する場合、行ごとに読み取るパフォーマンスが重要になります。この記事では、.NET で 1 GB のテキスト ファイルを読み取る最適な方法について説明します。

StreamReader の使用

.NET でテキスト ファイルを読み取るために広く使用されている方法は、StreamReader です。 .ReadLine。ただし、これはファイル全体をメモリに読み取るため、リソースを大量に消費する可能性があるため、大きなファイルにとっては最適なアプローチではありません。 .NET 4.0 以降では、MemoryMappedFile の使用を検討してください。このクラスは、大きなファイルを効率的に処理するために特別に設計されています。これにより、ファイルの一部にメモリからアクセスできるようにするメモリ マップト ファイルを作成できます。これにより、ファイル全体をメモリに読み取るオーバーヘッドが回避され、パフォーマンスが大幅に向上します。

コード サンプル

次のコードは、次のコードを使用して大きなテキスト ファイルを読み取る方法を示しています。 MemoryMappedFile:

結論

小さいテキスト ファイルの場合は StreamReader.ReadLine で十分ですが、大きなファイルの場合は MemoryMappedFiles の方が大幅にパフォーマンスが向上します。ファイル全体をメモリにロードするオーバーヘッドを回避することで、より高速かつ効率的な処理が可能になります。
using System.IO.MemoryMappedFiles;

// Create a memory-mapped file object
MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(filePath, FileMode.Open, "MyMappedFile");

// Create a memory-mapped view to the file contents
MemoryMappedViewAccessor view = mmf.CreateViewAccessor();

// Read the file line by line using a byte array
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = view.Read(buffer, 0, buffer.Length)) != 0)
{
    // Convert the buffer to a string
    string line = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);

    // Process the line as needed
}

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

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