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

    • 使用内联
    • 用低级语言重写关键代码
  • 相关阅读:
    【JavsScript】父子页面之间跨域通信的方法
    【JavaScript】【译】编写高性能JavaScript
    【JavaScript】你知道吗?Web的26项基本概念和技术
    【299】◀▶ IDL
    Python
    Cadence 信号完整性(一)-- 仿真步骤3
    「S-A-L-T-A」项目失败总结!
    java如何遍历hashMap
    Python
    VM网络无法连接--提示ethernet0无法连接到虚拟网络
  • 原文地址:https://www.cnblogs.com/maozhige/p/3833110.html
Copyright © 2020-2023  润新知