查看: 18237|回复: 3
收起左侧

[软件] make -j实际可并行线程数,和make -j实际可并行线程数+1哪个效率能更高?

[复制链接]
菩提祖师
发表于 2014-3-15 18:20:36 | 显示全部楼层 |阅读模式
make -j实际可并行线程数,和make -j实际可并行线程数+1哪个效率能更高?
虽然超过实际可并行数后会增加调度负担,但适当增加一点,调度负担增加较小,也能缓解个别线程阻塞导致的速度下降.
19940906
头像被屏蔽
发表于 2014-3-15 19:16:55 | 显示全部楼层
默认的make不加-j参数效率比较低
  1. make -j
  2.   既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。
  3.   用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
  4.   还是用Kernel来测试:
  5.   用make: 40分16秒
  6.   用make -j4:23分16秒
  7.   用make -j8:22分59秒
  8.   由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
  9.   不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
复制代码
a22271001
发表于 2014-3-16 10:04:16 | 显示全部楼层
我都是用可并行线程数+1的,
有一次j后面忘记加参数,不一会儿就把物理内存占满,硬盘超级响
菩提祖师
 楼主| 发表于 2014-3-18 21:04:20 | 显示全部楼层
a22271001 发表于 2014-3-16 10:04
我都是用可并行线程数+1的,
有一次j后面忘记加参数,不一会儿就把物理内存占满,硬盘超级响

什么意思?忘记加参数就沾满内存?线程数变成undefined吗?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-3-13 00:43 , Processed in 0.128435 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表