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

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

Linda Hamilton
リリース: 2025-01-04 01:33:42
オリジナル
288 人が閲覧しました

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

.NET で大規模な 1 GB のテキスト ファイルを読み取る効率的な方法

サイズがギガバイトに達する非常に大きなテキスト ファイルを扱う場合、ファイルを効率的に読み取ることが維持するために重要です。パフォーマンス。 .NET では、この課題に取り組むためのアプローチがいくつかあります。

1 つの方法は、StreamReader クラスとその多用途な ReadLine メソッドを利用することです。ただし、1 GB ものサイズのファイルの場合、この方法は面倒で遅くなる可能性があります。より最適化されたソリューションは、.NET 4.0 以降で大きなファイルを処理するために明示的に設計されたクラスである MemoryMappedFile を使用することです。

MemoryMappedFile を利用するには、次のようにクラスのインスタンスを作成できます。

MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(filePath, FileMode.Open, null, fileLength);
ログイン後にコピー

メモリ マップト ファイルが確立されると、ファイルをメモリに読み込まずにファイルの内容に直接アクセスできます。このアプローチにより、大きなファイル操作のパフォーマンスが大幅に向上します。

たとえば、MemoryMappedFile を使用してファイルから行を読み取るには:

byte[] buffer = new byte[1024];
mmf.CreateViewAccessor().ReadArray(byteOffset, buffer, 0, bufferSize);
string line = Encoding.UTF8.GetString(buffer);
ログイン後にコピー

また、StreamReader を使用したい場合は、次のようにすることもできます。バッファを使用して読み取りプロセスを最適化します:

using (StreamReader sr = new StreamReader(filePath))
{
    char[] buffer = new char[4096];
    int charsRead;
    while ((charsRead = sr.ReadBlock(buffer, 0, buffer.Length)) != 0)
    {
        // Process the buffered data...
    }
}
ログイン後にコピー

バッファベースの読み取りを利用することで、ディスク アクセス操作の数が増加し、大きなファイルのパフォーマンスが向上します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート