编写高效程序需要做到以下几点:
1.选择适当的算法和数据结构。
2.编写出能有效优化以转化成高效可执行代码的编译器。
5.1 优化编译器的能力和局限性
优化涉及对程序代码的转换,而编译器必须很小心地对程序使用安全的优化。GCC有足够的优化能力,但它并不是“有进取心”的编译器。
5.2 消除循环的低效率
核心思想是降低代码复杂度,线性复杂度是我们需要的。例:课本上提出反复求长度的vec_length(v)。
5.3 减少过程调用
使用变量直接访问而不是过程返回值。
5.4 消除不必要的内存引用
对一个内存引用(例如指针)进行修改至少需要两次读和一次写,而直接操作一个变量可以减少读写次数。
但这种优化只有比较激进的优化选项才会采用。
5.5 功能单元的性能
延迟:实际执行需要的时间
发射:两次运算之间需要的最小时间间隔
容量:能同时发生多少个这种操作
计算吞吐量问题:I为发射时间,C为容量
单功能单元:
整个CPU:当load小于C时,为()
ya