我看到一些指令说我应该使用make -j
与我的CPU核数乘以1.5。例如
所以我的问题是,这个数字会创造最好的构建性能还是它只是一个编造的数字?如果它是随机组成的,那么我应该如何将number传递给make -j
以获得最佳速度?
谢谢!
我想说这是一个虚构的数字,但它是有意义的。
编译的很大一部分就是I/O等待,如果你使用"make -j ' nproc ' "一些核心将只是等待磁盘访问(这通常是一个顺序的过程)。因此,尝试通过超额订阅并行任务的数量来放置那些等待编译代码的内核是有意义的。
这可能工作,也可能不工作,这取决于你的核数,磁盘速度,磁盘缓存,内存,内存上缓存的文件,代码大小,预编译头,语言的复杂性(c++比Fortran或C编译复杂得多),编译依赖,等等。
在我的经验中,如果你有32个或更多的内核,1.5的系数不太好,对磁盘I/O的压力太大。对于8个内核,它运行良好。