WHAT?
提高代码运行速度的方法,减少代码的资源占用
WHY?
这里提出的都是“可以尝试的”方法,有的或许在你的环境根本不起作用,有的则能实实在在产生很好的效果
HOW?
Logic - 逻辑
- 在知道答案后停止判断
- 按照出现频率来调整判断顺序:让运行最快和判断结果最肯能为真的判断先行,即,让程序更容易进入常见状况的处理
- 用查询表代替复杂表达式
- 惰性求值:lazy loading
Loop - 循环
- 将判断外提
- 合并:将两个相同计数器的循环合并
- 展开:循环被完全展开后,将具有更快的速度
- 尽量减少在循环内部做的工作
- 哨兵值
- 把最忙的循环放在最内部
- 削减强度
Data Transformations - 数据变换
- 使用整形数而不是浮点数
- 数组维度尽可能少
- 尽可能减少数组引用
- 使用辅助索引
- 使用缓存
Expressions - 表达式
- 利用代数恒等式:与其判断 sqrt(x) < sqrt(y) ,不如判断 x<y
- 削弱运算强度
- 用加法代替乘法
- 用乘法代替幂
- 利用三角恒等式代换等价的三角函数
- 用long和int代替longlong整数
- 用定点数或整形数代替浮点数
- 用单精度代替双精度
- 用移位操作代替乘2或除2
- 编译期初始化:用0.693代替log2
- 小心系统函数
- 使用正确的常量类型:运行时的类型转换会产生很大消耗
- 预先计算出结果
- 删除公共子表达式
Routime - 子程序
- 使用内联
- 用低级语言重写关键代码