我试图根据一些在线指南在 Ubuntu 中安装 OpenCV。其中指南之一是这个。它有以下行:
make -j $(($(nproc) + 1))
返回nproc
系统上可用的处理器/线程的数量。那么,比现有的更高的有什么优势呢?
答案1
大多数构建都受 I/O 限制,而不是 CPU 限制,因此 whilenproc
是一个不错的起点(另请参阅如何确定传递给 make -j 选项的最大数量?),大多数构建可以使用更多。如果您使用小型虚拟机进行构建(您经常会在构建场中找到这种虚拟机),则尤其如此;在那里你最终会得到-j 1
or -j 2
,并且使用-j 2
or-j 3
通常会导致更短的构建时间,而没有与诸如$(nproc) * 2
(即使在 8 线程系统上也可能导致问题的公式相关的风险,更不用说你发现的更大的线程数了服务器)。