• 《Code Complete》ch.26 代码调整技术


    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 - 子程序

    • 使用内联
    • 用低级语言重写关键代码
  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/maozhige/p/3833110.html
Copyright © 2020-2023  润新知