关注c++编译速度

来源:互联网 发布:apache无法访问子目录 编辑:程序博客网 时间:2024/06/05 11:41

早在今年的9月,我的一个项目,就面临着编译时间超长的问题,昨天我做过编译速度测试,使用 vc7.1,cl.exe在Rebuild过程中,cpu时间消耗近10分钟,整个项目多大呢?仅仅8000多行代码(当然,不包括一些底层库),而自己的另外一个近6万行代码的项目,rebuild一次也只需要3分钟左右的时间。

其实原因自己也很清楚,使用了过多的template,include了很多不必要的头文件,等等

但一直都没有下决心来改善这个问题,前几天看到云风关于c++预编译头文件的评论,他提到要对头文件进行优化,不应该学windows那样,为了方便,把所有东西全部都放在windows.h中。

我也试着对头文件进行了一次优化,首先将不必要的头文件尽量从基础头文件中清除(我项目里,一般都有一个BaseDef.h,类似MS的stdafx.h),考虑到一些实现的需要,将很多可能会用到的class,在BaseDef.h中声明出来,如果有文件确实需要使用到该class,在相应的源文件内include 该class 的定义头文件

这样下来,我的那个8000多行代码的项目,编译速度大约提高了近两倍,cpu时间消耗3分钟多一点

这样还是不够,我仔细的观察vc的编译输出,发现有一系列文件编译速度很慢(这个只能凭眼睛来看,不知道有什么方法来得到每个.cpp的编译消耗......),找到它们编译过慢的原因(include的一个头文件里面,使用到了boost.,而且,include了boost的头文件.....),接下来就是对该头文件进行优化,终于把boost的头文件移出该头文件

这样下来,我再rebuild一下项目,发现cpu消耗仅仅50多秒,比最初提高了10倍多,爽阿~~~

其实,编译速度也是可以优化的:)

原创粉丝点击