使用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人的车,如果设计出来是跑车的架子,怎么地都是很难达到好的目标的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值