1つの大きなファイルのハードディスクからデータを処理していて(処理は高速で、多くのオーバーヘッドはありません)、結果を書き戻す必要があります(数十万のファイル)。
結果をすぐにファイルに1つずつ書き始めましたが、これが最も遅いオプションでした。一定量のファイルのベクトルを作成し、それらを一度にすべて書き込んでから、ハードディスクがそれに注いだすべてのものを書き込むために占有されている間に処理に戻ると、はるかに高速になると思いました(少なくとも何が起こるかと思われます)。
私の質問は、ハードウェアの制約から書き込む必要のあるデータ量の収束値をどうにかして見積もることができるかということです。私にはそれはハードディスクバッファのもののように見えます、私はそのハードディスクに16MBのバッファを持っていて、これらの値を取得します(すべて〜100000ファイルの場合):
Buffer size time (minutes)
------------------------------
no Buffer ~ 8:30
1 MB ~ 6:15
10 MB ~ 5:45
50 MB ~ 7:00
それともこれは単なる偶然ですか?
また、書き込みパフォーマンスを一般的に最適化する方法についての経験/経験則にも興味があります。たとえば、より大きなハードディスクブロックが役立つなどです。
編集:
ハードウェアはかなり標準的な消費者向けドライブです(私は学生であり、データセンターではありません)WD 3,5 1TB / 7200 / 16MB / USB2、HFS +ジャーナル、OSはMacOS10.5です。すぐにExt3/Linuxと外部ではなく内部ディスクで試してみます)。