ビルドのプロファイリングに使用time
していたのですが、よりも数ミリ秒遅いmake
ことに気付きました。Intel Core2 Quad で gcc を使用してコンパイルしているため、プロセッサ コアは 4 つしかありません。この速度低下は、リソースの制限によるものでしょうか? また、ジョブのスケジュールに使用するものによってオーバーヘッドが追加されているのでしょうか?-j 8
-j 4
make
質問する
275 次
2 に答える
1
プロセッサよりも多くのプロセスを実行している場合、オペレーティング システムは何らかのコンテキスト スイッチングを必要とします。これは問題ではありませんmake
。これは、リソースが不足している場合にジョブをスケジュールする方法です。
于 2012-09-21T14:33:06.420 に答える
1
正直なところ、数ミリ秒の違いはおそらく単なる統計的ノイズであると考えています。テストを数回実行し、違いが重要であると想定する前に、その違いが再現可能かどうかを確認してください。
とはいえ、4 つの CPU で 8 つの CPU バウンド プロセスを実行すると、通常、4 つのプロセスを 2 セット実行するよりも多くのマルチタスク オーバーヘッドが発生します。make プロセスに多くの I/O が含まれる場合 (通常はそうです)、他のプロセスが I/O で停止しているときに CPU キューを埋めるために 4 つ以上 (たとえば 5 つまたは 6 つ) を実行することにはいくつかの利点がありますが、 8はやり過ぎかもしれません。
于 2012-09-21T20:57:11.967 に答える