2016-05-24 1 views
1

Linux上にSSDにデータを書き込むC++アプリケーションがあります。 アプリケーションは〜100 MB /秒で書き込みます。SSDを使用する場合は、1つのスレッドを使用して20個のスレッドではなく20個の異なるファイルを書き込むほうがよいですか?

毎秒、アプリケーションは20個の新しいファイルをディスクに書き込みます。アプリケーションの追加スレッドは、これらの20スレッドの他に、他のロジックとメンテナンスを実行します。

今のところ、私のアプリケーションは複数のスレッドを使って複数のファイルを同時に書き、スレッドごとに1つのファイルを書きます。

コードの設計を変更し、1つのスレッドで毎秒20個の新しいファイルを書き込む方が良いでしょうか?

+5

はなぜそれを測定し、それを試していないプログラムの全体的な実行時間を計測して行うことができる最高の、見つけ出す?どのような最適化の質問と同様、結果はシステム、アプリケーションの動作、および他の多くの要因によって異なります。つまり、複数のスレッドがデータの並列準備を可能にする可能性があります。各スレッドは出力操作時にブロックされますが、それは自分の書き込みを準備するために実行されている他のスレッドを停止しません。スレッド間の同期は、I/Oスケジューラと書き込みの性質に影響を与えます。大規模なブロックを1つ準備し、OSに単一のファイルに書き込ませる方が良いでしょう。 – Andrew

答えて

0

それはあなたのOS

に依存するが、あまりにも多くのスレッドが並列実行されている場合ではなく、ほとんどの時間OSのスレッド管理など4つの-8スレッドの最大を使用することをお勧めプログラムの開発をslowersでしょう

は、それらのそれぞれのために行うために複数のタスクを少し少ないスレッドを使用してみてください。)

それでも

関連する問題