深入理解计算机系统:优化程序性能
来源:互联网 发布:消费积分软件 编辑:程序博客网 时间:2024/06/06 13:51
编写高效程序需要几类活动:
- 选择合适的算法和数据结构;
- 编写出编译器能够有效优化以转换成高效可执行代码的源代码;
- 针对运算量特别大的计算,将一个任务分成多个部分,在多核和多处理器的某种组合上并行地计算。
优化编译器的能力和局限性
现代编译器运用复杂精细的算法来确定一个程序中计算的是什么值,以及它们是如何被使用的,从而简化表达式、减少运算。大多数编译器,包括GCC,向用户提供了一些对它们所使用的优化的控制,最简单的控制就是制定优化级别。
有很多妨碍优化的因素,它们主要指的是如果编译器不能否定优化后程序出错的可能性,就要放弃优化。
第一种是存储器别名使用,即两个指针可能指向同一个存储器位置的情况,它可能会导致意想不到的程序行为,所以该情形下不能对此进行优化。
第二个妨碍优化的因素是函数调用。大多数编译器不会试图判断一个函数是否没有副作用,因此会假设最糟的情况,并保持所有函数调用不变。
内联函数替换优化函数调用
包含函数调用的代码可以用一个称为内联函数替换的过程进行优化,即将函数调用替换为函数体。这样的转换既减少了函数调用的开销,也允许对展开的代码作进一步优化。
GCC完成基本的优化,但不会对程序进行更加“有进取心的”编译器所做的那种激进变换。
消除循环的低效率
一种优化是代码移动,即识别要执行多次但计算结果不会发生改变的计算。
减少过程调用
消除不必要的存储器引用
0 0
- 深入理解计算机系统:优化程序性能
- 《深入理解计算机系统》优化程序性能
- 程序性能优化-深入理解计算机系统
- 优化程序性能—《深入理解计算机系统》
- 深入理解计算机系统:优化程序性能
- 优化程序性能(《深入理解计算机系统》)
- 深入理解计算机系统--优化程序性能
- 《深入理解计算机系统》—优化程序性能
- 优化程序性能 计算机系统结构 深入理解计算机系统
- 深入理解计算机系统阅读笔记-优化程序性能
- 深入理解计算机系统之旅(五)优化程序性能
- 深入理解计算机系统 perflab 程序性能优化实验
- [读书笔记]深入理解计算机系统 第6章 优化程序性能
- 《深入理解计算机系统》读书笔记--程序编译优化
- cs app深入理解计算机系统:第五章 优化程序性能 几个优化的java实现
- 优化程序性能的几个方法(来自于《深入理解计算机系统》)
- 优化程序性能的几个方法(来自于《深入理解计算机系统》)总结
- 深入理解计算机系统——第05章——优化程序性能
- self和super的深入解析
- VC 多个定时器
- 最短路径
- Jdbc封装(MySql)
- 清华梦的粉碎—写给清华大学的退学申请 /王垠
- 深入理解计算机系统:优化程序性能
- 前端(1)---浏览器兼容
- Spring scope属性详解
- ARM内存读取与MMU
- frameset内嵌框架集
- minJump
- Java面向对象基础(封装,多态)=09/13
- SQL应用之依赖计算与回路检测
- 走迷宫