第5章 优化程序性能

编写高效程序需要做到以下几点:
1.选择适当的算法和数据结构。
2.编写出能有效优化以转化成高效可执行代码的编译器。

5.1 优化编译器的能力和局限性

优化涉及对程序代码的转换,而编译器必须很小心地对程序使用安全的优化。GCC有足够的优化能力,但它并不是“有进取心”的编译器。

5.2 消除循环的低效率

核心思想是降低代码复杂度,线性复杂度是我们需要的。例:课本上提出反复求长度的vec_length(v)。

5.3 减少过程调用

使用变量直接访问而不是过程返回值。

5.4 消除不必要的内存引用

对一个内存引用(例如指针)进行修改至少需要两次读和一次写,而直接操作一个变量可以减少读写次数。
但这种优化只有比较激进的优化选项才会采用。

5.5 功能单元的性能

延迟:实际执行需要的时间
发射:两次运算之间需要的最小时间间隔
容量:能同时发生多少个这种操作
计算吞吐量问题:I为发射时间,C为容量
单功能单元:\frac{1}{I}
整个CPU:\frac{C}{I}当load小于C时,为\frac{C_L}{I}()

ya

推荐阅读更多精彩内容