C++性能调优:
C++性能调优方面的几个基本原理:
- I/O 的开销是昂贵的
- 函数调用的开销是一个因素,因此我们应该内联短小的并且频繁调用的函数
- 复制对象的开销是昂贵的,最好是按照引用传递,而不是按值传递
但是上述三条准则没有涵盖所有的准则,C++ 性能提高的主要问题是对不必要的对象的创建以及后面的清除,这些不必要的对象预计要使用但是实际并没有使用。
构造函数和析构函数:
继承:在构造函数和析构函数由于设计等方面的需求,创建对象和清除对象时长会导致性能的损失,在继承层次中,创建对象将引起其父类的创建,清除对象也是如此,其次,对象相关联的的开销直接与派生链的长度和复杂性有关。创建对象的数量和派生类的复杂性成比例。
合成:在某些情况下我们可以为指针分配一个无效指,使得创建和清除的开销达到最小。
不高效的方法:
Trace::Trace(const char* name): theFunctionName(new string(name))
高效的方法:
Trace::Trace(const char* name): theFunctionName(0){
if(traceIsActive){
扫描二维码关注公众号,回复:
4004275 查看本文章
theFunctionName = new string(name);
}
}
缓式构造:C++自然而然的预先定义所有的对象的习惯是一种浪费。这和C语言不通,C语言在定义变量的时候没有运行时候的开销。
C++内存模型:
- 正常
(2)正常继承
(3)继承有重写
(4)多继承
(5)单继承 虚继承
(6)多继承虚继承
内联函数的使用:小、微常用的函数使用内联函数。一般递归不要使用内联函数。
系统设计以及缓存等优化:设计经验十分重要。