Make
使用邏輯是什麼((((nproc) + 1) 在 make 命令中?
我試圖根據一些線上指南在 Ubuntu 中安裝 OpenCV。指南之一就是這個。它具有以下行:
make -j $(($(nproc) + 1))
nproc
返回系統上可用的處理器/執行緒數。那麼,比現有的高一級有什麼好處呢?
大多數建構受 I/O 限制,而不是 CPU 限制,因此雖然
nproc
是一個不錯的起點(另請參閱如何確定傳遞給 make -j 選項的最大數量?),但大多數建構可以使用更多。如果您使用小型虛擬機進行建構,則尤其如此,您經常會在建構農場中找到它;在那裡你最終會得到-j 1
or-j 2
,並且使用-j 2
or-j 3
通常會導致更短的建構時間而沒有與公式相關的風險$(nproc) * 2
(即使在 8 執行緒系統上也可能導致問題,更不用說你發現的更大的執行緒數了伺服器)。