2012-01-24 20 views
0

ディスク上の大きなファイルをどのように読み込み、それを効率的に処理できるかを知りたいと思います。大きなファイルを効率よく読み込んで処理する方法は?

私はしばらくこの質問に対処しています。

私はそれについて考えていますが、一般的な解決策(プラットフォームに束縛されていない)はスレッドとバッファを使用する可能性があります。

しかし、私は最良の方法であるかどうかはわかりません。

私はこれらのエントリを読んでおり、どちらも正しいです。

What is the best way to do a search in a large file?

What's the best way to read and parse a large text file over the network?

だから、あなたのアドバイスは何ですか?

おかげ

+2

まずボトルネックを特定します。プログラムのプロセッサ負荷を表示するツールを使用します。それがほんの数パーセントである場合、一般的なケースでは、別のスレッドを使用すると、プログラムを1%高速化することができます。 –

+2

これは、読み取りに費やされた時間と処理に費やされた時間の比に大きく依存します。余分なスレッドは主にプロセッサにバインドされているとパフォーマンスを向上させることができますが、I/Oがほとんどの場合はパフォーマンスが低下する可能性があります。 –

答えて

1

Iが単一プロデューサスレッドがファイルを順次の部分を読み取り、複数のプロデューサスレッドが並行して処理するためにバッファに入れると、生産者 - 消費者モデルを用いてそれを行うことになります。

関連する問題