减少C++代码编译时间的方法
2015-09-08 10:58
405 查看
c++ 的代码包含头文件和实现文件两部分, 头文件一般是提供给别人(也叫客户)使用的, 但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间,假如你做的工程比较大(比如二次封装chrome这类的开发),重新编译一次的时间就会浪费上班的大部分时间,这样干了一天挺累的, 但是你的老板说你没有产出,结果你被fired, 是不是很怨啊, 如果你早点看到这段文章,你就会比你的同事开发效率高那么一些,那样被fired就不会是你了,你说这篇文章是不是价值千金!开个玩笑 :),言归正传,怎样减少编译时间呢, 我知道的就3个办法:
A. 删除不必要的#include,替代办法 使用前向声明 (forward declared )
B. 删除不必要的一大堆私有成员变量,转而使用 “impl” 方法
C. 删除不必要的类之间的继承
为了讲清楚这3点,还是举个实例比较好,这个实例我会一步一步的改进(因为我也是一点一点摸索出来了,如果哪里说错了, 你就放心的喷吧,我会和你在争论到底的,呵呵),现在先假设你找到一个新工作,接手以前某个程序员写的类,如下:
View Code
1. 删除不必要的#include,替代办法 使用前向声明 (forward declared )
2. 删除不必要的一大堆私有成员变量,转而使用 “impl” 方法
3. 删除不必要的类之间的继承
原文链接:http://blog.jobbole.com/85275/
A. 删除不必要的#include,替代办法 使用前向声明 (forward declared )
B. 删除不必要的一大堆私有成员变量,转而使用 “impl” 方法
C. 删除不必要的类之间的继承
为了讲清楚这3点,还是举个实例比较好,这个实例我会一步一步的改进(因为我也是一点一点摸索出来了,如果哪里说错了, 你就放心的喷吧,我会和你在争论到底的,呵呵),现在先假设你找到一个新工作,接手以前某个程序员写的类,如下:
// 只用 file and cx 有虚函数. #include "file.h" class cx; class error; class db; class old : public file { public: old( const cx& ); db get_db( int, char* ); cx get_cx( int, cx ); cx& fun1( db ); error fun2( error ); virtual std::ostream& print( std::ostream& ) const; private: class oldimpl* pimpl; //此处前向声明和定义 }; inline std::ostream& operator<<( std::ostream& os,const old& old_val ) { return old_val.print(os); } //implementation file old.cpp class oldimpl{ std::list<cx> cx_list_; deduce dudece_d_; };
View Code
[b]小结[/b]
这篇文章只是简单的介绍了减少编译时间的几个办法:1. 删除不必要的#include,替代办法 使用前向声明 (forward declared )
2. 删除不必要的一大堆私有成员变量,转而使用 “impl” 方法
3. 删除不必要的类之间的继承
原文链接:http://blog.jobbole.com/85275/
相关文章推荐
- C语言函数调用模型[调用过程中在堆栈中的出栈、进栈顺序]
- C/C++快速入门图形化教学法简介(目录)
- libcurl在vs2013下C++项目中的编译连接
- C语言---函数返回局部变量
- C++获取系统时间
- VS工程中添加c/c++工程中外部头文件及库的基本步骤
- 《C++入门经典(第4版)》之C++编程总结
- POJ C++程序设计 编程题#1 编程作业—STL2
- 通过指针引用字符串
- c++学习笔记
- C++站点
- 【华为上机试题C++】老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
- 【转】c++编译原理
- c++对txt文件的读取与写入
- C++中的内联函数inline总结
- 讲解C++的do while循环和循环语句的嵌套使用方法
- c++ primer 学习笔记
- C++中的while循环和for循环语句学习教程
- c++のnamespace
- 漫谈C指针第十二讲---回顾指针概念