CMU CSAPP笔记 第五章

Program Optimization

  • GCC优化级别
    • -Og最低优化
    • -O1,-O2,-O3优化程度依次递增
    • 优化可能会增加程序的大小,也可能使得程序更难调试
  • 常用优化手段

    • code motion
      • 将不变量移到循环外,避免重复计算
        这里写图片描述
        这里写图片描述
    • redution in strength
      • 将开销大的操作用开销小的代替
        • 乘法用位移或者加法代替
          这里写图片描述
    • 尽量用寄存器操作代替读取和写入内存
      这里写图片描述
      这里写图片描述

      • 编译器不会自动优化,因为不能确定b和a是否指向同一块地址
    • loop unrolling

      • 在一次循环中进行多次操作,来减少循环总次数
        这里写图片描述
      • 改变计算的次序
        • 具体原因见CSAPP-5.9.2
          这里写图片描述
  • 现代处理器采用分支预测来提高流水线效率
    • 通过使用条件传送指令代替条件控制指令来避免选择分支
      • 见第二章内容
  • code profiler
    • Unix系统提供了GPROF程序
      • 提供每个函数花费的时间,占总时间比和调用次数
        • 通过观察bottleneck来优化程序
        • 见CSAPP-5.14.2例子
      • 编译时添加-pg指令避免编译器将函数优化为内联函数,这样无法追踪函数调用
  • 下面链接的博客表达了对本章的批判.虽然有些偏激,但是里面的内容反而有助于我们理解本章,可以结合评论区食用
    https://www.cnblogs.com/chkkch/archive/2011/06/24/2089378.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值