CSAPP 第五章 优化程序性能
5-1&2 优化程序性能
保守性
编译器优化是保守的,只要有矛盾就不会激进的优化。
CPE
CPE表示每个元素执行所需要的周期数。如368+6*k,6就是CPE。
一个优化的例子
这个代码每一次迭代要读两次内存,写入一次。
这个只用读一次。
以上优化会有一定的效果,读写内存是占用时间的。
5-3 理解线代处理器
- 延迟 完成运算需要的总时间
- 发射 两次运算之间间隔的最小时钟周期数
- 容量 执行该运算的功能单元的数量
5-4 数据流图
- 延迟界限 最小所需的CPE的值
- 吞吐量界限
5-5 循环展开
ps:地址计算单元速度快所以可以相对的不管。
多路循环展开
CPE从5下降到2.5
重新结合变化
ps:由于第一个mul不需要相关的数据,所以可以提前执行即大幅度降低CPE。
5-6 理解程序性能
- 算法
- 消除连续的函数调用以及消除不必要的内存引用
- 循环展开
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!