2017-05-31 24 views
0

我在我的MacBook Pro(四核)上注意到,當我運行make時,它需要與make -j相同的時間,並且活動監視器顯示所有四個內核的使用率都很高。爲什麼是這樣?蘋果有一些默認設置嗎?我的意思是,將-j作爲默認值是有意義的,但從我在網上看到的沒有參數的應該只使用一個線程。即使沒有-j參數,Make使用多個內核?

這不一定是個問題,但我想了解其原因。

+0

我們可能需要一個顯示此行爲的實際工作示例。在makefile中可能會有一些技巧*(它可以用-j標誌調用另一個makefile),甚至可能與編譯器有關。 – Evert

+0

這裏是makefile:https://gist.github.com/michaelsavich/8711e75fc6c770cb550100d94c249c12 – PopKernel

+1

你通常有一個默認的make文件配置文件,它指定默認的'-j $ NUM_CORES'值。我不知道它在Mac上的位置。通常情況下,您不會設置大於'1'的默認值,因爲大多數代碼(即使是相當新的代碼)並不是並行構建的,除非代碼是專門編寫的以利用並行編譯。您可能會使用一個核心進行實際編譯,但是其他核心也會有大量工作要做。 –

回答

0

-j|--jobs標誌指定/限制可以同時運行的命令數量,而不是分配給單個命令的線程數量。將此選項看作併發性而不是並行性。

例如,我可以指定--jobs=2和同時具有ES6 transpiler並在後臺運行的一個預處理器SASS,在同一個終端窗口,留意任何文件的改變我可作出。