深入理解计算机系统--优化程序性能

来源:互联网 发布:plc编程指令大全 编辑:程序博客网 时间:2024/06/10 03:18

第五章 优化程序性能

   编写高效程序需要两类活动:第一,我们选择一组最好的算法和数据结构;第二,我们必须编写出编译器能够有效优化以转换成高效可执行的代码的源代码。

  对于第二个,理解优化编译器的能力和局限性是很重要的。

  事实上,编译器只能执行有限的程序转换,而且妨碍优化的因素(optimization blocker)还会阻碍这种优化,妨碍优化的因素就是程序中那些严重依赖于执行环境的方面。

  代码剖析程序(profilers)

  研究汇编代码是理解编辑器以及产生的代码会如何运行的最有效的手段之一。

 5.1 优化编译器的能力和局限性

     一、存储器别名使用(memory aliasing)

     编译器必须假设不同的指针可能会指向存储器中同一个位置。这造成了一个主要的妨碍化因素,这也可能是严重限制编译器产生优化代码机会的程序的一个方面。 

    二、函数调用

      编译器会假设最糟的情况,并保持所有的函数调用不变。

 5.2 表示程序性能

    CPE (cycles per element)

 5.3 程序示例

 5.4 消除循环的低效率

    代码移动(code motion)

    渐近的低效率

 5.5 减少过程调用

 5.6 消除不必要的存储器引用

 5.7 理解现代处理器

   5.7.1 整体操作

    

  5.7.2 功能单元的性能

  5.7.3 更近地观察处理器操作

 5.8 降低循环开销

    减少循环展开次数

 5.9 转换到指针代码

 5.10 提高并行性

  5.10.1 循环分割

     二次循环展开并使用二路并行

 5.10.2 寄存器溢出

 5.10.3 对并行的限制 

 5.11  综合:优化合并代码的效果小结

 

   5.11.1 浮点性能异常

   5.11.2 变换平台

 5.12 分支预测和预测错误惩罚

   指令流水线化

 5.13 理解存储器性能

   5.13.1 加载的执行时间

   5.13.2 存储的执行时间

 5.14 现实生活:性能提高技术

 5.15 确认和消除性瓶颈

          

 

    

   

   

    

 

    

  

   

    

   

  

  

   

   

  

   

     

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 实木家具掉漆了怎么办 木桌子上有划痕怎么办 烤漆家具掉漆怎么办 洗碗帕沾了油污怎么办 手被棍子打肿了怎么办 楼上弄的声音大怎么办 楼上太吵楼下人怎么办 严重多囊卵巢该怎么办 被医院骗了应该怎么办 四维胎儿不配合怎么办 孕甲状腺tsh有点偏高怎么办 20岁得胃癌了怎么办 洗鼻涕耳朵堵了怎么办 胡振兴预约不上怎么办 玻尿酸打歪了怎么办 隆鼻后鼻子胀疼怎么办 鼻子做的太高了怎么办 感觉被医院骗了怎么办 中风后嘴巴歪了怎么办 孩子中风嘴歪了怎么办 胃疼怎么办简单的偏方 胃痛怎么办简单有效的方法 急用5000元怎么办又没信用卡 我真的不想活了怎么办 不想活了怎么办很累 毕业推荐表丢了怎么办 想去英国留学该怎么办 三个人跟团住宿怎么办 跟团被强制消费怎么办 苹果6s手机黑屏怎么办 胸闷喘不过气来怎么办 经常胸闷气短呼吸困难怎么办 沙漠玫瑰根软了怎么办 誉峰国际的业主怎么办 20岁头发一直掉怎么办 考研报名点满了怎么办 便池堵了怎么办最简单 在皇城老妈生病怎么办 智齿烂了很痛怎么办 苹果4id密码忘了怎么办 前海医院出院后怎么办