文档详情

计算机系统第5章-优化.pdf

发布:2020-09-15约3.75万字共46页下载文档
文本预览下载声明
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 优化编译器的局限性  在基本约束条件下运行  不能引起程序行为的任何改变  例外:可能是程序在使用非标准语言特性  会阻止可能导致病态行为的优化  对程序员来说很明显的行为可能会被语言和编码风格混淆  如 ,数据范围
显示全部
相似文档