Computer Systems A Programmer’s Perspective II (深入理解计算机系统 第五章)

OPTIMIZING PROGRAM PERFORMANCE

优化程序性能

Capabilities and Limitations of Optimizing Compiolers

编译器的优化是有局限性的,

  • 考虑安全性的优化.
  • 函数的调用次数.
  • 使用内敛函数替换优化函数调用.

Expressing Program Performance

Cycle Per Element,CPE 每元素的周期数. 用于表示程序性能并指导改进代码的方法. CPU活动的顺序是由时钟控制的,时钟提供了某个频率的规律信号. 如 GHZ 千兆赫兹.

Program Example

Eliminating Loop Inefficiencies

即把循环体中的var i:int; array.length 等提取出来. 非常常见.也有效.

Reducing Procedure Calls

减少过程调用,过程调用会带来相当大的开销,妨碍大多数形式的程序优化. ::函数与方法调用开销?

Eliminating Unneeded Memory References 消除不必要的存储器引用

即采用临时变量存储值,而不是每次需要的时候再去计算和获取.对栈上变量的访问效率要远好于重新获取值带来的消耗.

Understanding Modern Processers. 理解现代处理器.

modernCpu.png现代处理器 是超标量的(Superscalar) ,每个周期执行多个操作,而且是乱序(out-of-order).

  • 指令控制单元 (Instruction Control Unit ,ICU) 负责从存储器中读出指令序列,根据这些指令序列生成一组针对程序数据的基本操作
  • 执行单元 (Execution Unit,EU) 执行以上操作.

Loop Unrolling 循环展开.

#+imgs/modernCpu.png wpid-moderncpu.png

Enhancing Parallelism 提高并行性.

优化合并代码的结果小结

限制因素

Understanding Memory Performance 历届存储器性能.

Performance Improvement Techniques 实际应用,提高性能的技术

优化设计

选择适当的算法和数据结构.

基本编码原则
  1. 消除连续的函数调用,尽量将计算移到循环外
  2. 消除不必要的存储器引用,引入临时变量来保存中间结果.最后在最后的值计算出来时,才将结果放在数组或全局变量中. :important:
  3. 展开循环,降低开销 ,通过使用例如多个积累变量和重新结合等技术,找到方法提高指令级并行.

程序剖析 Profiler 未明觉厉…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值