CSAPP 第五章 优化程序性能

5-1&2 优化程序性能

保守性

编译器优化是保守的,只要有矛盾就不会激进的优化。

CPE

CPE表示每个元素执行所需要的周期数。如368+6*k,6就是CPE。

一个优化的例子

这个代码每一次迭代要读两次内存,写入一次。
image

这个只用读一次。
image

以上优化会有一定的效果,读写内存是占用时间的。

5-3 理解线代处理器

  • 延迟 完成运算需要的总时间
  • 发射 两次运算之间间隔的最小时钟周期数
  • 容量 执行该运算的功能单元的数量

5-4 数据流图

  • 延迟界限 最小所需的CPE的值
  • 吞吐量界限

image

5-5 循环展开

ps:地址计算单元速度快所以可以相对的不管。

image

多路循环展开

image

CPE从5下降到2.5

重新结合变化

image

ps:由于第一个mul不需要相关的数据,所以可以提前执行即大幅度降低CPE。

image

5-6 理解程序性能

  • 算法
  • 消除连续的函数调用以及消除不必要的内存引用
  • 循环展开
    image
posted @ 2024-06-01 18:21  _daybreak  阅读(6)  评论(0编辑  收藏  举报