为什么
make -k -j4 ;make -k -j4;make;
似乎比make -j4
更快?
我正在用它来编译c ++而且它看起来更快,因为它可以一次性完成链接,但我不确定有谁知道为什么?
答案 0 :(得分:1)
标志-k
指示make
即使出现错误也继续执行其操作。 -j4
指示make
在可能的情况下同时为不相关的目标启动四个流程。
如果您的make
操作成功,即没有错误发生,那么第二次和第三次调用make
,无论您传递的参数是什么,都应报告一个简单的“无事可做”。
我认为这是一种时间幻觉。
答案 1 :(得分:1)
你知道-k
标志的作用吗?它告诉make
即使出现错误也要继续尝试。这意味着即使某些文件由于尚未构建依赖性而无法构建时它也可能会继续(当使用-j
标志时可能会发生这种情况)。第二次调用make
第二次尝试构建文件,第三次完成。
没有-k
的调用会在出现错误时立即停止,让您再次执行,也许多次。这肯定感觉它需要更长的时间,并且可能需要更长的时间以及需要用户交互。