2017-05-31 8 views
0

私はMacBook Pro(Quad-core)上でmakeを実行すると、make -jと同じ時間がかかることに気がつきましたが、Activity Monitorは4つのコアがすべて使い果たしていることを示しています。どうしてこれなの? Appleにはいくつかのデフォルト設定がありますか?つまり、-jをデフォルトにするのは意味がありますが、Web上で見たことから、引数がなくても1つのスレッドしか使用しないでください。makeは-j引数なしでも複数のコアを使用しますか?

これは必ずしも問題ではありませんが、それでも原因を理解したいと思います。

+0

実際の動作例が必要な場合があります。 makefileの中にいくつかのトリッキー*があるかもしれません(それは-jフラグを使って別のmakefileを呼び出すことができます)、あるいはコンパイラと何か関係があります。 – Evert

+0

ここにmakefileがあります:https://gist.github.com/michaelsavich/8711e75fc6c770cb550100d94c249c12 – PopKernel

+1

デフォルトの '-j $ NUM_CORES'値を指定するデフォルトのmakeファイルの設定があります。私はそれがMac上のどこにあるのか分からない。一般に、ほとんどのコード(かなり最近のコードでさえ)は、並列にコンパイルを利用するためにコードが具体的に書かれていない限り、パラレルに構築されないため、デフォルト値を '1 'より大きく設定しません。あなたは実際のコンパイルに1つのコアを使用しているかもしれませんが、他のコアでも十分な作業が行われます。 –

答えて

0

フラグ-j|--jobsフラグは、1つのコマンドに割り当てるスレッドの数ではなく、同時に実行できるコマンドの数を指定/制限します。このオプションは、並列処理ではなく並行処理と考えることができます。

例えば、--jobs=2を指定して、同じターミナルウィンドウ内でバックグラウンドでES6トランスペラレータとSASSプリプロセッサの両方を実行して、ファイルの変更を監視することができます。

関連する問題