第11章 代码优化

第11章 代码优化

ID:19877042

大小:572.50 KB

页数:66页

时间:2018-10-07

第11章 代码优化_第1页
第11章 代码优化_第2页
第11章 代码优化_第3页
第11章 代码优化_第4页
第11章 代码优化_第5页
资源描述:

《第11章 代码优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、11.1优化技术简介11.2局部优化11.3控制流分析和循环优化第十一章代码优化9/15/2021111.1优化技术简介一、优化的原则1、等价原则优化后不改变原程序运行的功能。2、有效原则优化后产生的目标代码运行时间较短,占用空间较小。9/15/20212与机器无关的优化---中间代码优化。依赖于机器的优化---目标代码优化。二、优化阶段源代码中间代码目标代码中间代码优化目标代码优化9/15/20213三、优化分类(1)局部优化:(基本块)(2)循环优化:对循环中的代码进行优化(3)全局优化:在整个程序范围内的优化9/15/20214四、常用优化技术简介

2、1.删除多余运算2.循环不变代码外提3.强度削弱4.变换循环控制条件5.合并已知量与复写传播6.删除无用赋值9/15/20215例如:(假设数组元素占用空间为4个字节)P:=0forI:=1to20doP:=P+A[I]*B[I]1.删除多余运算(删除公共子表达式):目的:提高目标代码速度。9/15/20216(6)T4:=4*I(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=add

3、r(A)-4(5)T3:=T2[T1](7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(6)T4:=T1变址取数(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1]9/15/20217目的:减少循环中代码总数。方法:把循环不变运算,即其结果独立于循环执行次数的表达式提到循环的前面,使之只在循环外计算一次。2、代码外提9/15/20218(1)P:=0(2)I:=1(3)T1:=4*I(4)T

4、2:=addr(A)-4(5)T3:=T2[T1](6)T4:=T1(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(4)T2:=addr(A)-4(7)T5:=addr(B)-49/15/20219基本思想:把强度大的运算换算

5、成强度小的。例如:a)i*2=2*i=i+ib)0-1=-1c)f/2.0=f*0.53.强度削弱9/15/202110(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[

6、T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(5)(3)T1:=4*I(3‘)T1:=T1+49/15/2021114、变换循环控制条件经过变换后,有些变量不被引用,可以从循环中删除。9/15/202112(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20g

7、oto(5)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(3’)T1:=T1+4(12)ifgoto(5)T1<=809/15/2021135、合并已知量与复写传播编码时的已知量—常数,可在编译时计算出它的值,这种变换称为合并已知量或常数合并。通过复制后没有再改变的值可以互相替换,不会改变程序的结果,这种变换称为复写传播。9/15/202114(1)P:=0(2)I:=1(

8、4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*

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

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

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