BookNotes_《CSAPP_3e》_chp05_Optimizing Program Performance

calmXia的持续行动01 – 2020/01/12~ --《CSAPP_3e》


最近2个星期的时间读完了《Computer Systems, A Programmer`s Perspective》 3e 英文版 chapter05:Optimizing Program Performance。做个阶段性总结,个人觉得如下notes对日常工作中的编码和调优非常有帮助:

优化程序性能的基本策略:

Hige-level design

为眼前的问题选择适当的算法和数据结构。尤其要避免使用算法或编码渐进性能差的技术。

Basic coding princiiples

避免限制优化的因素,以便编译器产生高效的代码。

  • 消除过多的函数调用。
    如果可能的话,将计算移出到循环外。这需要在性能和程序的模块性之间作出平衡。
  • 消除不必要的内存引用。
    引入临时变量来保存中间结果,最后才将结果存放到数组或全局变量中。

Low-level optimizations

这个级别的优化指的是优化代码的结构,以充分利用硬件(处理器)性能。一般来说是利用pipeline,提高程序的并行性,从而提高性能。

  • 循环展开
  • 多个累计变量和重新结合
  • 将条件性代码改写为功能性代码
    目的是使编译采用condition move指令进行数据传送,可以提高性能。

警告:在为了优化性能而重写/重构代码时,一定要做好充分的code review和test,特别是一些边界条件的检查,确保优化后的代码和优化前的代码输出结果保持一致。

发布了70 篇原创文章 · 获赞 27 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xiaosaerjt/article/details/105342457