linux程序编译速度提高方法

linux程序编译速度提高方法

ID:13825721

大小:30.00 KB

页数:4页

时间:2018-07-24

linux程序编译速度提高方法_第1页
linux程序编译速度提高方法_第2页
linux程序编译速度提高方法_第3页
linux程序编译速度提高方法_第4页
资源描述:

《linux程序编译速度提高方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、【转】Linux程序编译速度提高方法项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。tmpfs有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。mou

2、nt-ttmpfstmpfs~/build-osize=1G用2.6.32.2的LinuxKernel来测试一下编译速度:用物理磁盘:40分16秒用tmpfs:39分56秒呃……没什么变化。看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,你需要有足够的内存才能负担得起这个tmpfs的开销。make-j既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。用make-j带一个参数,可以把项目在进行

3、并行编译,比如在一台双核的机器上,完全可以用make-j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。还是用Kernel来测试:用make:40分16秒用make-j4:23分16秒用make-j8:22分59秒由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保

4、守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。ccacheccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次makeclean再make才行。安装完ccache后,可以在/u

5、sr/local/bin下建立gcc,g++,c++,cc的symboliclink,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local/bin会在PATH中排在/usr/bin前面)。继续测试:用ccache的第一次编译(make-j4):23分38秒用ccache的第二次编译(make-j4):8分48秒用ccache的第三次编译(修改若干配置,make-j4):23分48秒看来修改配置(我改了CPU类型...)对ccache的影响是很大

6、的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。可以用ccache-s来查看cache的使用和命中情况:cachedirectory                    /home/lifanxi/.ccachecachehit                          7165cachemiss                        

7、14283calledforlink                      71notaC/C++file                    120noinputfile                      3045filesincache                    28566cachesize                         81.7Mbytesmaxcachesize                    976.6Mbytes可以看到,显然只有第二编次译时cache命中了,

8、cachemiss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。distcc一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是dist

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。