- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
新工科建设·计算机类系列教材;6;;;
定义
所谓优化,实质上是对代码进行等价变换,使得变换后的代码具有更高的效率,包括时间效率和空间效率。
目的
获得性能较好的代码,即要尽量缩小存储空间,还要尽量提高运行速度。;优化可在编译的不同阶段进行:
源代码设计阶段--程序员选择好的算法和语句
语义分析阶段--如何生成高质量的中间代码
中间代码--采用优化技术
目标代码--有效利用寄存器、指令、处理机
;;;1、合并常量运算
运算对象是常量或在编译时已知,则在编译时直接计算出结果,不必等到运行时再去计算。;优化前的四元式:
(1)(*,3.14,2,T1)
(2)(:=,T1,_,x)
(3)(*,2,5,T2)
(4)(*,T2,a,T3)
(5)(:=,T3,_,y)
(6)(+,x,0.5,T4)
(7)(:=,T4,_,z)
优化后:
(1) (:=,6.28,_,x)
(2)(*,10,a,y)
(3)(:=,6.78,_,z)
;
2、删除无用赋值
删除程序中对运行结果没有任何作用的赋值变量。
;优化前的四元式:
(1)(+,2,a,x)
(2)(+,2,b,y)
(3)(*,2,a,T1)
(4)(*,T1,b,x)
(5)(*,x,y,y)
优化后的四元式:
(1)(+,2,b,y)
(2)(*,2,a,T1)
(3)(*,T1,b,x)
(4)(*,x,y,y)
;3、削减运算强度(运算强度大→小)
;4、删除多余运算(或删除公共子表达式)
公共子表达式:重复使用两次以上的子表达式,且表达式中变量的值没有发生变化。
;优化前:
(1)(+,b,c,T1)
(2)(*,a,T1,T2)
(3)(+,T2,d,x)
(4)(+,b,c,T3)
(5)(*,a,T3,T4)
(6)(-,T4,d,y)
优化后:
(1)(+,b,c,T1)
(2)(*,a,T1,T2)
(3)(+,T2,d,x)
(4)(-,T2,d,y)
;5、外提不变表达式
不变表达式:循环中其值始终保持不变的表达式
;优化前的四元式:
(1)(:=,1,_,i)
(2)(=,i,100,T1)
(3)(BF,(11),T1,_)
(4)(+, a,b,T2)
(5)(+, c,d,T3)
(6)(*, T2,T3,T4)
(7)(*, T4,i,x)
(8)(+, x,i,y)
(9)(+, i,1,i)
(10)(BR,(2),_,_)
(11)( )
;优化后的四元式:
(1)(:=,1,_,i)
(2)(+,a,b,T1)
(3)(+,c,d,T2)
(4)(*,T1,T2,e)
(5)(=,i,100,T3)
(6)(BF,(11),T3,_)
(7)(*,e,i,x)
(8)(+,x,i,y)
(9)(+,i,1,i)
(10)(BR,(5),_,_)
(11)( )
;;;;;;;;;;;;;1、外提循环中的不变表达式;;;2、削减运算强度;;;3、删除归纳变量;;;;
文档评论(0)