系列文章导航:《新的职业目标,以及C++性能优化》
针对C++语言特性的性能优化checklist
(1)尽量使用栈内存,较少使用堆内存。
(2)将堆内存池化。
(3)函数参数使用const&或&传递类对象。
(4)短小的函数宏化或inline化。
(5)将类成员变量的初始化放在初始化列表中。尤其是类中含有的对象的初始化。
(6)严禁使用类成员变量互相初始化。
(7)利用给构造函数加explicit来阻止编译器进行隐式的构造函数转换。
(8)避免或减少对象的构造和销毁。
(9)避免创建不必要的对象。避免编译器生成的临时对象。在C++11及以后版本中可以使用右值引用对临时对象进行优化。
(10)尽量将非内建类型的对象延迟到已经确切知道其有效状态时定义或创建。这样可以减少临时对象的生成。即建议这样写:
Object r = a + b;
而不建议这样写:
Object r;
/*...不使用r的代码段...*/
r = a + b;
这里有个前提是在r = a + b;之前没有用到r,因而不必提前生成。
(11)尽量使用a += b;而避免使用 a = a + b;。
(12)对于非内建类型,在保证语义前提下,优先使用++i;避免使用i++;。
(13)如果函数体较大,不要使用内联。
(14)使用智能指针。(如果可能)
(15)内存池增加自动伸缩机制。
(16)给频繁创建和销毁的对象应用内存池。