2012-03-11 13 views
0

私は大きなデータ・ファイルの同じグループにバイナリ・リーダを作成する並列ループを持っています
これらの読者がパラレル・ファッションで同じファイルを読んでいるというパフォーマンスを傷つけるかどうかは、彼らは排他的に異なるファイルを読んでいたならば、それはより速く行くだろう)私が求めています
を私は推測する(関連するI/Oディスクアクセスがたくさんあるので...)並列並行バイナリ・リーダ

編集:?私は言及を忘れてしまった:私はAmazon EC2インスタンスを使用しており、データはC:\ Diskに割り当てられています。私はこの問題にどのように影響するか考えません。

編集2:データフォルダを複製し、2つの異なるソースから読み取って、その結果を確認します。

+1

答えは私のものと同じであると思います。[ここ](http://stackoverflow.com/questions/8470306/multithreaded-file-compare-performance)。 –

答えて

3

複数のスレッドを使用して同じディスクから読み取ることはお勧めできません。ディスクのメカニカルヘッドは毎回次の読み取り場所を探すために回転する必要があるため、基本的には複数のスレッドでバウンドしているため、パフォーマンスが低下します。

実際には、単一のスレッドを使用してファイルを順次読み取ってから、スレッドのグループにチャンクを渡して並列処理してください。

+0

これは非常に悪いニュース私の友人です。私はアプリケーションコア全体を書き直す必要があります:((( –

+0

編集を参照してください... –

+0

)何も変更していないのですが、単一のメカニカルディスクの場合は、複数のスレッドで読み込みを高速化する必要はありません。 – Tudor

2

ファイルの場所によって異なります。 1台のメカニカルハードディスクを使用している場合は、ファイルを並行して読み取ることはできません。パフォーマンスが低下する可能性があります。おそらくパフォーマンスを傷つけることはありません並列でファイルを読み込む、単一SDDに

  • を、私はあなたが何を得るでしょう期待していない:あなたは、しかし、他の構成を有することができます。
  • RAID 1とハーフデートRAIDコントローラを使用する2つのミラーディスクでは、2つのファイルを同時に読み取ることができ、かなりのパフォーマンスが得られます。
  • ファイルがSANに格納されている場合は、一度にいくつかのファイルを読み込み、パフォーマンスを向上させることができます。

    これを試してみる必要がありますが、ファイルに十分な大きさがない場合はOSのキャッシュ機構が測定に影響を与え、2回目のテストが実行されます本当に速い。

+0

Amazon EC2 Cloud Instanceを使用しています... –

+0

ああ!次に並行して読んでみると驚くかもしれません。 – zmbq