C++性能

C++性能调优:

C++性能调优方面的几个基本原理:

  1. I/O 的开销是昂贵的
  2. 函数调用的开销是一个因素,因此我们应该内联短小的并且频繁调用的函数
  3. 复制对象的开销是昂贵的,最好是按照引用传递,而不是按值传递

但是上述三条准则没有涵盖所有的准则,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++内存模型:

  1. 正常

(2)正常继承

(3)继承有重写

(4)多继承

https://images0.cnblogs.com/blog/92071/201309/27224618-f81dc050a09e4676a56dbf9e3d1b68d5.pnghttps://images0.cnblogs.com/blog/92071/201309/27224621-973050370e2145a283c1525506c0bb86.png

(5)单继承 虚继承

https://images0.cnblogs.com/blog/92071/201309/27224703-248bfc5f7f914c25aa5b0215858eb57c.png

(6)多继承虚继承

https://images0.cnblogs.com/blog/92071/201309/27224656-368f45e502064369be0913edbf113da6.jpg

https://images0.cnblogs.com/blog/92071/201309/27224703-248bfc5f7f914c25aa5b0215858eb57c.png

内联函数的使用:小、微常用的函数使用内联函数。一般递归不要使用内联函数。

系统设计以及缓存等优化:设计经验十分重要。

猜你喜欢

转载自blog.csdn.net/B1009/article/details/81137317