使用ccache大幅度加速gcc编译速度至少1倍以上(不需要修改任何编译选项)
因为我们整个项目都是使用c++开发的,生成的so足有50M,原来编译一遍要三五分钟,一个针对oracle,一个针对mysql,整个轮回下来这部分就要10来分钟,加上代码上传、翻译,一轮配管打包下来二三十分钟。BOSS有些生气,效率比较低。今天一大早到公司就着手测试。经在本地vmware测试,编译gperftools的速度从2分30秒下降到1分。立刻让项目组安排调整。原来配管只有一个cpu核,经过让升级到4核,加上使用ccache,不需要修改任何编译选项,快的不行。使用如下:
- 安装ccache
yum install ccache
- 查看ccache 安装位置
whereis ccache
查看安装路径, /usr/bin/ccache
- 创建gcc,g++链接
mkdir ~/.bin
cd ~/.bin/
ln -s /usr/bin/ccache gcc
ln -s /usr/bin/ccache g++
- 设置PATH,更改本地.bash_profile文件,修改gcc,g++链接到ccache vim ~/.bashrc 添加 export PATH=$HOME/.bin:$PATH
- 确认是否生效 which g++ 如果是$HOME/.bin/g++就成功了; 直接编译项目,飞一样的感觉。
经查,gcc还支持多核编译,还没有测试(因为我们已经超级快了),有兴趣的可以参考https://www.cnblogs.com/jacktu/archive/2010/07/15/1777974.html。
最近配管测试下来,ccache有个问题,就是如果头文件都变了的化,第一次编译的时候就和平常一样了,比较慢,此时还是需要借助gcc的-j8进行多核编译。不过通常来说,大型文件每次变更所有头文件的概率是很小的,变化的只是一小部分,我们也发现了目前每天发布都是一个版本,导致头文件变更存在问题,已经在研究根据模块修改,而不是一撸子全部在一个大版本号中。这也充分说明了逻辑架构如果错了,实现再优秀没有用。就像我们要造一辆每次可以运50人的车,如果设计出来是跑车的架子,怎么地都是很难达到好的目标的。
使用ccache大幅度加速gcc编译速度至少1倍以上(不需要修改任何编译选项)的更多相关文章
- iOS进阶--将项目的编译速度提高5倍
前言 作为开发团队的负责人,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60万.现在打包一次耗时需要11~1 ...
- Java动态编译优化——提升编译速度(N倍)
一.前言 最近一直在研究Java8 的动态编译, 并且也被ZipFileIndex$Entry 内存泄漏所困扰,在无意中,看到一个第三方插件的动态编译.并且编译速度是原来的2-3倍.原本打算直接用这个 ...
- 从 Webpack 到 Snowpack, 编译速度提升十倍以上——TRPG Engine迁移小记
动机 TRPG Engine经过长久以来的迭代,项目已经显得非常臃肿了.数分钟的全量编译, 每次按下保存都会触发一次10s到1m不等的增量编译让我苦不堪言, 庞大的依赖使其每一次编译都会涉及很多文件和 ...
- QT5.7静态编译(使用VS2013与VS2015编译,XP可用,有详细configure脚本。VS下Qt插件的配置。编译选项加上-mp可以开启多线程编译,编译速度提高2倍以上)
http://blog.csdn.net/u011964923/article/details/52886908 configure -confirm-license -opensource -pla ...
- ccache - 让Xcode编译速度飞起来
今天来介绍一个小工具ccache,其可以提高xcode的编译速度.说起缘由,是因为我的苹果电脑配置比较低,而每次开发调试或测试打包都需要编译工程,虽然项目工程代码量不算大,但是编译的时间还是很长,尤其 ...
- 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结
1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...
- 如何加快C++代码的编译速度 转 ccache
http://www.cnblogs.com/baiyanhuang/archive/2010/01/17/1730717.html C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速 ...
- 加速 Android Studio 的编译速度 2.2
Android studio 2.2 当中有一项新的功能:Dex In Process. 这项功能可以动态的加快编译速度,以及提高Instant Run 的效率. 那么怎么来使用这项新功能呢?你只需要 ...
- gcc编译问题
gcc avl.o hash.o list.o rb.o example.o -o 123.exe 多个.o输出 exe -c和-o都是gcc编译器的可选参数.-c表示只编译(compile)源文件但 ...
随机推荐
- Dotfuscator 使用图解教程
Dotfuscator:是.NET混淆器和压缩器,它可以帮助您防止您的应用程序被反编译.同时,它还可以使得您的应用程序更加小巧以及高效.我用的是4.9版本的Dotfuscator,Dotfuscato ...
- Stacking调参总结
1. 回归 训练了两个回归器,GBDT和Xgboost,用这两个回归器做stacking 使用之前已经调好参的训练器 gbdt_nxf = GradientBoostingRegressor(lear ...
- 用于模型选择的AIC与BIC
一.AIC(Akaike information Criterion)准则 二.BIC(Bayesian information Criterion)准则 参考文献: [1]AIC与BIC区别
- vue中解决跨域问题
方法1.后台更改header header('Access-Control-Allow-Origin:*');//允许所有来源访问 header('Access-Control-Allow-Metho ...
- animator 新动画
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Animator ...
- ssh整合not found class 异常总结
(1)org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.sqls ...
- 记学习hadoop时无法启动namenode的问题
1. 按照apache的文档,学习搭建hadoop. 2. 当把机器重启之后发现无法启动 namenode. 3. 查看日志发现是一些文件找不到,这些文件的位置是在/tmp目录下的,而/tmp 目录下 ...
- Day8 面向对象
一.面向对象和面向过程 各位,我们现在如果要将大象放冰箱,用面向过程怎么实现呢? 1.把大象放到冰箱里 第一步:把冰箱门打开 第二步:把大象放进去 第三步:把门关上 def open_fridge_d ...
- lua元表学习
a = {, } b= {, } vector2 = {} function vector2.Add(v1, v2) if(v1 == nil or v2 == nil)then return nil ...
- CNN那么多的网络有什么区别吗?如何对CNN网络进行修改?
https://www.zhihu.com/question/53727257/answer/136261195 http://blog.csdn.net/csmqq/article/details/ ...