计算机系统第5章-优化.pdf
文本预览下载声明
School of Computer Science and Technology, HIT
第5章程序优化
教 师:吴锐
计算机科学与技术学院
哈尔滨工业大学
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 1
School of Computer Science and Technology, HIT
要点
综述
普遍有用的优化方法
代码移动/预先计算
复杂运算简化Strength reduction
公用子表达式的共享
去掉不必要的过程调用
妨碍优化的因素Optimization Blockers (优化障碍)
过程调用
存储器别名使用Memory aliasing
运用指令级并行
处理条件
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 2
School of Computer Science and Technology, HIT
关于性能的现实
性能比渐进复杂度(asymptotic complexity)更重要
常数因子也很重要!
代码编写不同,性能差10倍
一定要在多个层次进行优化:
算法, 数据表示,过程,循环
优化性能一定要理解“系统”
程序是怎样被编译和执行的
现代处理器+存储系统是怎么运作的
怎样测量程序性能与定位“瓶颈”
在不破坏代码模块化与整体性generality下,怎样改进程序
性能
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 3
School of Computer Science and Technology, HIT
具备优化功能的编译器
提供程序到机器间的有效映射
寄存器分配
代码选择与排序(调度)ordering (scheduling)
消除死代码
消除较小的低效代码eliminating minor inefficiencies
(通常)不提高渐进效率asymptotic efficiency
由程序员来选择最佳的总体算法
大-O 比常数因子(常常)更重要
但常数因子也很重要
难以克服“妨碍优化的因素/优化障碍”
潜在的内存别名使用memory aliasing
潜在的函数副作用
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition 4
School of Computer Science and Technology, HIT
优化编译器的局限性
在基本约束条件下运行
不能引起程序行为的任何改变
例外:可能是程序在使用非标准语言特性
会阻止可能导致病态行为的优化
对程序员来说很明显的行为可能会被语言和编码风格混淆
如 ,数据范围
显示全部