使用ccache大幅度加速gcc编译速度至少1倍以上(不需要修改任何编译选项)

  因为我们整个项目都是使用c++开发的,生成的so足有50M,原来编译一遍要三五分钟,一个针对oracle,一个针对mysql,整个轮回下来这部分就要10来分钟,加上代码上传、翻译,一轮配管打包下来二三十分钟。BOSS有些生气,效率比较低。今天一大早到公司就着手测试。经在本地vmware测试,编译gperftools的速度从2分30秒下降到1分。立刻让项目组安排调整。原来配管只有一个cpu核,经过让升级到4核,加上使用ccache,不需要修改任何编译选项,快的不行。使用如下:

  1. 安装ccache

    yum install ccache
  2. 查看ccache 安装位置

    whereis ccache 

    查看安装路径, /usr/bin/ccache
  3. 创建gcc,g++链接

     mkdir ~/.bin

    cd ~/.bin/

    ln -s /usr/bin/ccache gcc

    ln -s /usr/bin/ccache g++
  4. 设置PATH,更改本地.bash_profile文件,修改gcc,g++链接到ccache

    vim ~/.bashrc

    添加 export PATH=$HOME/.bin:$PATH
  5. 确认是否生效

    which g++

    如果是$HOME/.bin/g++就成功了;

    直接编译项目,飞一样的感觉。

  经查,gcc还支持多核编译,还没有测试(因为我们已经超级快了),有兴趣的可以参考https://www.cnblogs.com/jacktu/archive/2010/07/15/1777974.html。

  最近配管测试下来,ccache有个问题,就是如果头文件都变了的化,第一次编译的时候就和平常一样了,比较慢,此时还是需要借助gcc的-j8进行多核编译。不过通常来说,大型文件每次变更所有头文件的概率是很小的,变化的只是一小部分,我们也发现了目前每天发布都是一个版本,导致头文件变更存在问题,已经在研究根据模块修改,而不是一撸子全部在一个大版本号中。这也充分说明了逻辑架构如果错了,实现再优秀没有用。就像我们要造一辆每次可以运50人的车,如果设计出来是跑车的架子,怎么地都是很难达到好的目标的。

posted @ 2018-07-11 21:16  zhjh256  阅读(4615)  评论(0编辑  收藏  举报