我试图理解-j选择制作命令。根据手册,使用此选项,用户可以“指定要同时运行的作业数”。我真正想了解的是此选项中指定的数值与 PC 的核心/线程数之间的联系。因此,例如,如果我使用:
制作-j 8
这是否意味着我的电脑至少有 8 个核心(或线程)?
而且,如果此链接存在,如果 -j 选项中指定的值大于 PC 的核心/线程数,会发生什么情况?该选项会被忽略吗?
感谢所有善意解答我的(愚蠢的)疑问的人。
答案1
此选项指定将使用多少个同时线程。
如果使用过多,该选项将不会被忽略,但编译可能会运行得更慢。
如果设置的线程太少,则不会加载所有 CPU 核心。
有人建议使用 + 1,甚至 *2。我使用的 CPU 核心数是原来的两倍。
您可以测试哪种方法可以获得更好的结果。
答案2
-j 选项指示make
要并行运行多少个作业(命令)。这取决于系统拥有的物理 CPU 和 RAM 数量。
许多make
作业会使用系统中找到的所有 CPU。在我的计算机上,它有四个 CPU,这相当于设置“-j 4”。这将允许以make
最快的时间完成。
但是,如果您使用了全部或过多的 CPU,您将失去一些系统控制权,因为没有空闲的 CPU。因此,我总是被告知使用 -j 选项时,CPU 数量应比实际拥有的少一个,因此如果您必须使用 control-c make
(例如),剩余的 CPU 可以执行此操作。就我而言,我会使用“-j 3”。
尝试使用 -j CPU、CPU+1 或 CPU+2,看看哪种方法最适合您。要对每次运行进行计时,请在命令前加上该命令time
,它会为您提供具体的编译/运行时间。