一直以为,现在主流的程序,比如apache2.2,编译过程自动会对多核优化
结果发现不是这样的
测试环境:默认./configure无参数后的apache2.2.14源码根目录
测试方法:使用以下命令,粗略记录编译过程时间。
$ date >> /qshen/time && make && date >> /qshen/time
对比与加了-j参数的make的编译时间
查阅资料,网上很多人用双路INTEL XEON E5404测试时使用参数-j16,使用单路E5405测试使用参数-j8。这个不太理解。因为E5405是四核心,每核心1线程,不知为何要使用二倍的jobs。在此也实际测试
我的测试环境CPU是INTEL XEON E5405,单路。8G内存。
首先,不带-j的命令执行2次
然后,使用-j4执行二次
再然后,使用-j8执行二次
最后使用-j16执行一次作为参考数据
结果:共计执行
$ cat /qshen/time
Mon Feb 1 12:51:17 CST 2010
Mon Feb 1 12:52:55 CST 2010
Mon Feb 1 12:53:29 CST 2010
Mon Feb 1 12:55:07 CST 2010
Mon Feb 1 12:55:34 CST 2010
Mon Feb 1 12:56:14 CST 2010
Mon Feb 1 12:56:37 CST 2010
Mon Feb 1 12:57:16 CST 2010
Mon Feb 1 12:57:38 CST 2010
Mon Feb 1 12:58:16 CST 2010
Mon Feb 1 12:58:36 CST 2010
Mon Feb 1 12:59:13 CST 2010
Mon Feb 1 12:59:48 CST 2010
Mon Feb 1 13:00:26 CST 2010
结果发现,确实默认的make不加-j参数效率比较低。加上-j参数,-j4和-j8性能差距不大,-j16性能就比较差了。准备进一步翻阅资料看看到底应该取值多少。