编程珠矶阅读笔记三
第三部分 产品
排序算法
C库qsort非常简单并且相对比较快,它比手写的快速排序慢仅仅是因为它的通用而
且灵活的接口使用函数调用进行每个比较。C++库sort 具有最简单的接口:通过调用
sort(x, x+n)排序数组x;它也具有很高的执行效率。如果一个系统排序能够满足你的需
求,那么就不需要自己编写代码。
代码优化规则
用空间换取时间规则
扩展数据结构。通常,通过给结构增加其他信息或改变结构内部的信息让它访问得
更快能够减少对数据的常用操作所需的时间。
高速缓存.必须降低经常访问的数据的访问成本。
懒惰计算法。除非需要,否则该策略永远都不会计算某个元素,这样可以避免计算
不必要的元素。
用时间换取空间规则
压缩。密集存储表示能够通过增加存储和检索数据所需的时间来降低存储成本。
解释程序。通常,使用解释程序能够减少表示程序所需的空间,解释程序压缩表示
相同的操作序列。
循环规则
将代码移出循环。最好不要在循环的每次迭代中都执行特定的操作,而是将它放在
循环外部,仅仅执行一次。循环合并。如果两个邻近的循环操作作用在同一个元素集上,那么最好合并这两个
消除无条件分支。在快速的循环中不应该包含无条件分支。
操作部分,仅仅使用一个循环控制操作。
逻辑规则
利用代数恒等式。
重新排序测试
消除布尔变量
过程规则
下所函数层次
利用常用情况
协同并发
表示规则
初始化编译时间
尽量减少数组元素上的迭代循环,使用加法替代乘法。
配对计算