程序性能优化入门

这两天在做一个 benchmark,但是这方面的东西弄得我脑阔剧痛。但是发现其实我都是很懒惰的没学啥东西,诡异的自己折腾来折腾去,发现其实自己所谓优化都是脑洞优化,没有真正去找到程序的瓶颈。这次好好反省一下:

C++ 的混合特性为我们提供了多种实现方式,一方面可以实现性能管理的全自动化,另一 方面也可以对性能进行更加精准的控制。正是这些选择方式,使得优化 C++ 程序以满足性 能需求成为可能。

C++ 有一些热点代码是性能“惯犯”,其中包括函数调用、内存分配和循环。下面是一份 改善 C++ 程序性能的方法的总结,也是本书的大纲。这些优化建议简单得让人震惊,而且 所有这些建议都是曾经发表过的。当然,恶魔隐藏在细节中。本书的示例和启发将会帮助 读者在优化机会出现时更好地把握住它们。

其实优化大致如下:

  • 使用更好的编译器,打开编译选项
  • 使用最优算法
  • 使用更好的库并用好库
  • 减少内存分配
  • 减少复制
  • 移除计算
  • 使用最优数据结构
  • 提高并发
  • 优化内存管理

性能工具

Profiler

分析器会生成各个函数在程序运行过程中被调用的累积时间的表格报表。对性能优化而言,它是一个非常关键的工具,因为它会列出程序中最热点的函数。

计时器软件