私は大量のデータを生成し、それをキューに入れて書き込みますが、問題はそのデータを私が現在書いているよりも速く生成しています(メモリを最大にして減速を開始する)。後でファイルを解析する予定があるので、注文は問題ではありません。メモリからファイルに大量のデータを書き込む最速の方法は何ですか?
私は少し見渡して、私の現在のプロセスを設計するのに役立ついくつかの質問を見つけました(でも私はまだそれが遅いと感じています)。 (私はEC2を使用していて、おそらくハードウェアの問題)私は多分、この間違ったを評価するので、私はプログラミングにかなり新しいです
//...background multi-threaded process keeps building the queue..
FileWriter writer = new FileWriter("foo.txt",true);
BufferedWriter bufferWritter = new BufferedWriter(writer);
while(!queue_of_stuff_to_write.isEmpty()) {
String data = solutions.poll().data;
bufferWritter.newLine();
bufferWritter.write(data);
}
bufferWritter.close();
が、非常に迅速にキュー結果をダンプするためにあります。ここに私のコードは、これまでのところです私のアプローチが大丈夫なら、何とか改善することができますか?順序は関係ありませんので、複数のドライブ上の複数のファイルに書き込む方が理にかなっていますか?スレッディングは速くなりますか?など。私は、最良のアプローチとあらゆる提案がすばらしいとは確信していません。私の目標は、キューの結果を保存することです(申し訳ありません/ dev/null :-)に出力し、私のアプリのための可能な限り低いメモリ消費量を維持する(私は100%は確かではないが、キューは15ギガバイトを埋めるので15ギグ+ファイルになると仮定しています)。
Fastest way to write huge data in text file Java(私はバッファリングライターを使用する必要があります実現) Concurrent file write in Java on Windows(私は素晴らしいアイデアではなかったかもしれないマルチスレッドの書き込みいることがわかり製)
私はCPUの速度>ハードドライブの速度を理解しているので、書き込みはおそらく処理に負けてしまうでしょう、私はちょうどhdスピードを手助けする方法を理解しようとしています。 –
多くのものはあなたのボトルネックに依存します。私はあなたの帯域幅を最大限に活用していると思います(あなたの質問のように見えます)あなたのアカウントを最大限に活用することができます(コスト面で)。 –
おおよその計算では、毎回15GBで4ドルがかかります。 –