make(使用 -j 选项)

hol*_*ine 6 make

我试图理解make命令中-j选项的真正含义。根据手册,通过此选项,用户可以“指定同时运行的作业数量”。我实际上想了解的是此选项中指定的数值与电脑的核心/线程数之间的联系。所以,例如,如果我使用:

使-j 8

这意味着我的电脑至少有 8 个核心(或线程)?

并且,如果此链接存在,如果 -j 选项中指定的值大于 PC 的核心/线程数,会发生什么情况?该选项会被简单地忽略吗?

感谢任何好心人回答我(愚蠢的)疑问。

Pil*_*ot6 7

该选项指定将使用多少个并发线程。

如果使用太多,该选项不会被忽略,但编译速度可能会变慢。

如果您设置的线程太少,则不会加载所有 CPU 核心。

有一些建议使用+1,甚至*2。我使用了两倍的 CPU 核心。

您可以测试哪种方式可以提供更好的结果。


hey*_*ema 5

-j 选项告诉您make并行运行多少个作业(命令)。这受到系统拥有的物理 CPU 和 RAM 数量的限制。

许多make作业使用系统中找到的尽可能多的 CPU。在我的电脑上,它有四个CPU,相当于设置“-j 4”。这将允许make在最快的时间内完成。

但是,如果您使用全部或太多 CPU,您就会失去一些系统控制权,因为没有空闲的 CPU。因此,我总是被告知要使用 -j 选项,并使用比实际拥有的 CPU 少的一个 CPU,因此,如果您必须使用 control-c make(例如),则剩余的 CPU 可以做到这一点。就我而言,我将使用“-j 3”。

尝试使用 -j CPU、CPU+1 或 CPU*2,看看哪种最适合您。要为每次运行计时,请在time命令前加上命令,它将为您提供特定的编译/运行时间。