私は16000のジョブを実行します。C++ std :: async:8コアと比較して4コアで高速
各ジョブは独立しています。共有メモリ、プロセス間通信、ロックまたはミューテックスはありません。
私はubuntu 16.06です。 C++ 11。インテル®Core™i7-8550U CPU @ 1.80GHz×8
私は、コア間でジョブを分割するためにstd :: asyncを使用します。
I 8(コアあたり2000)にジョブを分割する場合、私は4(コアあたり4000)にジョブを分割する場合、計算時間が145 あり、計算時間60
出力が後に低減されていますどちらの場合も同じです。
計算中にCPUを監視すると(ちょうどhtopを使用すると)、予想どおりに処理されます(最初の100%では8コア、2番目のケースでは100コアで4コアのみ使用されます)。
4つのコアがはるかに高速8
コードは表示されません。 –
あなたは8コアを持っていません、そのCPUはクワッドコアです。 – Mat
さて、あなたは間違っている。それを間違える方法の1つは、最も遅いスレッドが完了するのを待つことです。その代わりに、より小さいパケットで計算ジョブを分割して、次に準備ができているスレッドで処理できるようにします。標準のプロデューサ - コンシューマアルゴリズムを見てください。 –