CSAPP第五章:优化程序性
来源:互联网 发布:电影院订票系统 php 编辑:程序博客网 时间:2024/05/16 15:20
- 程序的目标:正确性和性能
- 如何编写高效的程序:
- 选择合适的数据结构和算法。
- 编译器能够有效优化。
- 针对大量运算,并行计算。
- 编译器的局限性:
- 无法判断指针(例如两个指针如果指向同一个地方会出现很多莫名的bug,必须检查指针)。
程序性能的表示:CPE。
例子:- 1.消除循环的低效率:例如for(int i=0;i<vec.lengh();i++),最好改为:int len = vec.length(); for (int i=0;i<len;i++)。
- 好处是不需要每一次循环都调用函数。(再例如strlen(),性能差距随着循环次数的增加非线性增大)
- 2.消除不必要的存储器引用:
- 3.减少过程调用:但是可能会影响程序的模块性为代价
- 4.在循环中能够使用局部变量,或者减少寻址操作,指针或者全局变量的赋值最好移动到循环外部。以及通过判断等语句减少循环次数。
- 读写相关:存储器读的效果依赖于最近的一次存储器写。
- 小结:性能提高技术:
- 高级设计:为遇到的问题选择和合适的数据结构和算法。
- 基本编码原则:
- 消除连续的函数调用:有妥协性的牺牲模块性
- 消除不必要的存储器引用,引入临时变量保存结果,只有当最后的值计算出来时才放到数组和存储器中
- 展开循环
- 读写相关
- 负载均衡:amdahl定律:想要大幅提高整个系统的速度,必须提高整个系统很大一部分的速度。取决于这个部分有多么重要和速度提高了多少。
- 程序的目标:正确性和性能
- 如何编写高效的程序:
- 选择合适的数据结构和算法。
- 编译器能够有效优化。
- 针对大量运算,并行计算。
- 编译器的局限性:
- 无法判断指针(例如两个指针如果指向同一个地方会出现很多莫名的bug,必须检查指针)。
程序性能的表示:CPE。
例子:- 1.消除循环的低效率:例如for(int i=0;i<vec.lengh();i++),最好改为:int len = vec.length(); for (int i=0;i<len;i++)。
- 好处是不需要每一次循环都调用函数。(再例如strlen(),性能差距随着循环次数的增加非线性增大)
- 2.消除不必要的存储器引用:
- 3.减少过程调用:但是可能会影响程序的模块性为代价
- 4.在循环中能够使用局部变量,或者减少寻址操作,指针或者全局变量的赋值最好移动到循环外部。以及通过判断等语句减少循环次数。
- 读写相关:存储器读的效果依赖于最近的一次存储器写。
- 小结:性能提高技术:
- 高级设计:为遇到的问题选择和合适的数据结构和算法。
- 基本编码原则:
- 消除连续的函数调用:有妥协性的牺牲模块性
- 消除不必要的存储器引用,引入临时变量保存结果,只有当最后的值计算出来时才放到数组和存储器中
- 展开循环
- 读写相关
- 负载均衡:amdahl定律:想要大幅提高整个系统的速度,必须提高整个系统很大一部分的速度。取决于这个部分有多么重要和速度提高了多少。
- 1.消除循环的低效率:例如for(int i=0;i<vec.lengh();i++),最好改为:int len = vec.length(); for (int i=0;i<len;i++)。
- 好处是不需要每一次循环都调用函数。(再例如strlen(),性能差距随着循环次数的增加非线性增大)
- 2.消除不必要的存储器引用:
- 3.减少过程调用:但是可能会影响程序的模块性为代价
- 4.在循环中能够使用局部变量,或者减少寻址操作,指针或者全局变量的赋值最好移动到循环外部。以及通过判断等语句减少循环次数。
- 读写相关:存储器读的效果依赖于最近的一次存储器写。
- 小结:性能提高技术:
- 高级设计:为遇到的问题选择和合适的数据结构和算法。
- 基本编码原则:
- 消除连续的函数调用:有妥协性的牺牲模块性
- 消除不必要的存储器引用,引入临时变量保存结果,只有当最后的值计算出来时才放到数组和存储器中
- 展开循环
- 读写相关
- 负载均衡:amdahl定律:想要大幅提高整个系统的速度,必须提高整个系统很大一部分的速度。取决于这个部分有多么重要和速度提高了多少。
- CSAPP第五章:优化程序性
- Csapp读书笔记:第五章
- CSAPP第五章小结
- CSAPP读书笔记第六章(优化cache命中率)
- 优化数据库第五章
- CSAPP:优化程序性能(一)
- CSAPP:优化程序性能(二)
- CSAPP:优化程序性能(三)
- CSAPP:优化程序性能(四)
- 第五章 优化程序性能
- 第五章 优化程序性能
- CSAPP 第二章 homework
- CSAPP读书笔记第二章:
- csapp第三章读书笔记
- CSAPP第四章读书笔记
- CSAPP第八章:读书笔记
- CSAPP第七章-链接
- CSAPP第十二章读书笔记
- 命令行参数解析之GetOpt
- 界面布局学习心得
- int ? 与 int 之间的转换
- HDU 4167 User Names【string stl】
- 模板--模板元编程
- CSAPP第五章:优化程序性
- 纽约大学Courant数学研究所介绍
- Java 异常
- Android XML解析学习——方式比较
- C#如何使用LINQ查询数据(一)
- 读书笔记 Effective STL
- vmware converter无法迁移和无法打开vc桌面
- 满分通过科目二
- 【xenclient】 使用小结 -- 部署思路