编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt

编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt

ID:51619213

大小:1.32 MB

页数:89页

时间:2020-03-26

编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt_第1页
编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt_第2页
编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt_第3页
编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt_第4页
编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt_第5页
资源描述:

《编译技术 张莉第二部分-提高篇 电子教案-第14章-代码优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、•概述•优化的基本方法和例子•基本块和流图•基本块内的优化•全局优化北京航空航天大学计算机学院111.1概述代码优化(codeoptimization)指编译程序为了生成高质量的目标程序而做的各种加工和处理。时间效率(减少运行时间)目的:提高目标代码运行效率空间效率(减少内存容量)原则:进行优化必须严格遵循“不能改变原有程序语义”原则。2北京航空航天大学计算机学院优化所花费的代价和优化产生的效果可用下图表示:优化的效果优化的代价•示意图:表示只要做些简单的处理,便能得到明显的优化效果。北京若航要空航进天一大学步计提算机高学优院化效果,就要逐步付出更大的代价。3针对SPEC2000中lucas

2、和mcf施加不同级别的编译优化后的运行结果(编译器AlphaCompiler)北京航空航天大学计算机学院4XORPJITOptimizationsGRA全局寄存器40.00%分配35.00%Code指令调度30.00%Scheduling25.00%局部子表达LCSE20.00%式删除15.00%inlining代码内联10.00%有保护的5.00%guarded代码内联inlining0.00%消除数组ABCE-5.00%ssomllepl边界检查eptxledexalhyklcogrcraeeecardrovNPCE消除空指gpnp针检查北京航空航天大学计算机学院5为什么要优化?Ø有的大

3、型计算程序一运行就要花上几十分钟,甚至几小时、几天、几十天,这时为优化即使付出些代价是值得的。Ø程序中的循环往往要占用大量的计算时间。所以为减少循环执行时间所进行的优化对减少整个程序的运行时间有很大的意义。——尤其有实时要求的程序。Ø至于(像学生作业之类的)简单小程序(占机器内存,运行速度均可接受),或在程序的调试阶段,花费许多代价去进行一遍又一遍的优化就毫无必要了。(尤其机器速度、存储的快速发展。)北京航空航天大学计算机学院6下面的优化合理吗?intfoo(inta){intfoo(inta)intcount=0;{for(inti=1;i<=100;i++){returna+5050;c

4、ount+=i;}}returna+count;}北京航空航天大学计算机学院7优化方法的分类1:•与机器无关的优化技术:即与目标机无关的优化,通常是在中间代码上进行的优化。–如:数据流分析,常量传播,公共子表达式删除,死代码删除,循环交换,代码内联等等•与机器相关的优化技术:充分利用系统资源,(指令系统,寄存器资源)。–面向超标量超流水线架构、VLIW或者EPIC架构的指令调度方法;面向SMP架构的同步负载优化方法;面向SIMD、MIMD或者SPMD架构的数据级并行优化方法等–特点:仅在特定体系结构下有效北京航空航天大学计算机学院8优化方法的分类2:•局部优化技术–指在基本块内进行的优化–例

5、如,局部公共子表达式删除•全局优化技术–函数/过程内进行的优化–跨越基本块–例如,全局数据流分析•跨函数优化技术–整个程序–例如,跨函数别名分析,逃逸分析等北京航空航天大学计算机学院911.2基本块和流图(1)prod:=0voidfoo(int*a,int*b)(2)i:=1{(3)t1:=4*iintprod=0;(4)t2:=a[t1](5)t3:=4*iinti;(6)t4:=b[t3](7)t5:=t2*t4for(i=1;i<=20;i++){(8)t6:=prod+t5prod=prod+a[i]*b[i];(9)prod:=t6(10)t7:=i+1}(11)i:=t7…(1

6、2)ifi<=20goto(3)}(13)…北京航空航天大学计算机学院10函数foo的C语言源码和三地址中间代码分析(1)prod:=0•不利于优化,因为编译器(2)i:=1•得不到分支、路径等控制(3)t1:=4*i信息。(4)t2:=a[t1](5)t3:=4*i•得不到数据流、控制流的(6)t4:=b[t3]信息(7)t5:=t2*t4(8)t6:=prod+t5(9)prod:=t6(10)t7:=i+1(11)i:=t7(12)ifi<=20goto(3)(13)…北京航空航天大学计算机学院11基本块定义•基本块–基本块中的代码是连续的语句序列–程序的执行(控制流)只能从基本块的第

7、一条语句进入–程序的执行只能从基本块的最后一条语句离开北京航空航天大学计算机学院12基本块基本块中的代码是连续的语句序列程序的执行(控制流)只能从基本块的第一条语句进入基本块的例程序子的执行:只能划从基本分块的最基后一条本语句块离开(1)prod:=0下列语句序列,哪(2)i:=1些属于同一个基本(3)t1:=4*i块,哪些不属于?(4)t2:=a[t1](5)t3:=4*i(1)~(6)(6)t4:=b[t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。