引言:
有些程序员过于关注程序的效率;由于太在乎细小的“优化”,他们编写出的程序过于精妙,难以维护。而另外一些程序员很少关注程序的效率;他们编写的程序有着清晰漂亮的结构,但效率极低以至于毫无用处。优秀的程序员将程序的效率纳入整体考虑之中:效率只是软件中众多问题之一,但有时候也很重要。
本章“代码调优”,作者通过讲述Chris Van Wyk的代码调优过程,引出了代码调优的几个小方法。
1、问题1——整数取模。
K = (j+rotdist)%n替换为:k=j+rotdist; if(k>=n) k-=n;这样,该代码使用一次比较运算和一次(很少执行的)减法运算取代了高开销的模运算。
2、问题2——函数、宏和内敛代码。
3、问题3——顺序搜索。使用哨兵来合并测试条件可以获得大约5%的加速。展开循环可以达到大约56%的额外加速。
4、问题4——计算球面距离。将笛卡尔坐标和经度、维度存储在一起是修改数据结构的一个例子;使用开销较低的欧氏距离而不是角度距离属于利用等价的代数表达式。
最后,作者讲到,对于代码调优最重要的原则就是尽量少用它。作者从效率的角色、度量工具、设计层面、双刃剑几个方面分析了代码调优的优劣两面性。回归到一点,就是对于一个优秀的程序员,不论是在程序维护,程序可靠性,还是程序的效率方面,都不能只顾一头,而是要尽量做一个综合的评估再根据实际需求进行取舍。