CSAPP第五章小结
来源:互联网 发布:c语言入门那本书好 编辑:程序博客网 时间:2024/05/23 00:04
第五章小节
第五章中,主要讲各种优化技术,首先通过引入CPE的概念来量化各种优化方法得到的性能,从而给于我们更强的说服力。第二,作者指出优化的地方,什么地方应该优化,就是关键代码中的少数内部循环部分,这些部分耗用的时间通常是值得关注的。
两种优化技巧
作者举例说明了各种编码技巧对性能的提升,尤其印象深刻的,减少重复过程的调用和减少对存储器中的重复引用,可以获得非常不错的改善,比如
int i;int *result = 0;for( i = 0; i < strlen(str);i++){ *result += *str++;}
一 、减少过程调用
第一种改善方法是,减少过程的调用,这里的过程是strlen();
int i;int *result = 0;int len = strlen(str);for (i = 0; i < len; i++){ *result += *str++;}
这样做的话,strlen()只会被调用一次,会提升一部分性能,接下来还有一个地方可以优化,那就是减少存储器应用。
减少存储器引用
示例如下:
int i = 0;int *result = 0;int len = strlen(str);int temp = 0;for(i = 0; i < len; i++){ temp += *str++}result += temp;
以上操作可以减少对result指向内存的引用,从而加快了性能,书上看到的效果是提升了两倍。
多路并行,多路展开
作者并没有就此止步,而是结合现代处理器流水线处理指令的结果,从而充分利用处理器的并行特性来优化 ,具体就是多路展开,多路并行,从而获得最佳效果。书中花了很大的篇幅来讲授了如何根据寄存器的变化来确定关键路径,从而更好地优化代码,说实话,这部分没怎么掌握。
GPOF工具帮助查找性能瓶颈
其次作者还提出了用性能剖析程序GPOF 来确定代码的性能瓶颈,从而找到最耗时的部分。
总结
最后作者说了这些优化技巧呢只能是第二层次的优化,第一层次的优化是设计好数据结构和算法,其次才是这些编码编码技巧。数据结构和算法没设计好,编码技巧再好也不能提高程序的性能。这里作者点明了数据结构和算法的重要性,与战略和战术的关系扯上了关系,战略错误,战术优秀也无济于事,而战略正确,而战术得当才能成功。
本章的有助于平时编写代码时,写出性能优异的代码,以及这些优化技巧比较有效的原因,所以还是很有收获的。
阅读全文
0 0
- CSAPP第五章小结
- Csapp读书笔记:第五章
- CSAPP第五章:优化程序性
- CSAPP 第六章-存储器层次结构 小结
- CSAPP第7章小结--链接
- CSAPP 第八章:异常控制流 小结
- CSAPP 第十一章:网络编程小结
- 5.6 第五章小结
- 第五章 输入 小结
- 5.6 第五章小结
- 第五章知识小结
- CSAPP第三章:程序的机器级表示 小结
- CSAPP 第二章 homework
- CSAPP读书笔记第二章:
- csapp第三章读书笔记
- CSAPP第四章读书笔记
- CSAPP第八章:读书笔记
- CSAPP第七章-链接
- MySQL源码安装
- Python 学习笔记-错误记录
- C++矩阵计算库Eigen3之:线性代数与分解
- golang实现简单的反射demo
- C++中动态类型与动态绑定、虚函数、运行时多态的实现
- CSAPP第五章小结
- 数字字符串转换为字母组合的种类数 动态规划
- github一些用法
- 对话系统工程师
- 【Android】声音播放截断(骤停)的问题
- 利用redis创建订单号
- 视频编辑器-MovieMator简洁使用-功能和快速入门-创建项目、导入和导出
- 。。。
- 杨辉三角