- 1、本文档共161页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
代码改进变换的标准培训教案
公共子表达式 1、定义: 如果表达式E先前已计算,并且从先 前的计算至现在,E中变量的值没有 改变,那么E的这次出现称为公共子 表达式。 2、优化的方法----删除公共子表达式 ????在B5中,对t7和t10的赋值分别有公共子表达式4*i和4*j在它们的右部。如果用t6代替t7;t8代替t10,删除这些公共子表达式,就可以避免表达式的重复计算,达到优化的目的。 例1:删除B5中的公共子表达式. 例2: 在例1中,我们删除的只是B5基本 块中的局部公共子表达式。下面我 们看一个既有局部子表达式,又有 全局子表达式的例子。我们采用先 删除局部子表达式,后删除全局子 表达式的方法。这涉及到一种新的 优化方法——复写传播 复写传播 例1中的流图经过删除公共子表达式优化后还存在进一步改进的地方。 以B5为例: 复写传播(续) 复写传播:复写传播和一种形式为f:=g的赋值有关, 复写传播变换的做法是在复写语句f:=g后,尽可能 用g代替f。 ? 死代码删除 如果变量的值以后还要引用,则 称它在程序的一点是活跃的;否 则它在该点是死亡的。死代码指 其计算的值绝不被引用的代码。 死代码删除(续) 例如: ??????????… … ???????????????? ???debug := false ??? ????????????? if (debug) print … … ????????????????????… … 死代码删除(续) 复写传播的优点之一是它常常使得复写语句成为死代码。 例如:在下图中的B5经过公共子表达式删除、复写传播, 我们看死代码删除后的情况是什么样。 循环优化 现在我们简短介绍一下非常重要的可优化的地方, 即循环。尤其是程序消耗它大部分时间的内循环。 如果减少内循环的指令数,即使增加了外循环的 指令数,程序的运行时间也可以减少。 代码外提 代码外提是减少循环中代码总数的一 个重要办法。这种变换是把循环不变 计算(即产生的结果独立于循环执行 次数的表达式)放到循环的前面。(注 意:这里隐含着循环只存在一个入口) ?? ???? 代码外提(续) 例如:下面是一个while语句: ????????????while ( i = limit-2 ) ???????????????? 循环体 假设while的循环体不改变limit的值,那 么limit-2是循环不变计算。代码外提的 结果是: ????????????t=limit-2; ????????????while ( i = t ) ???????????????? 循环体 当然while的循环体也不改变t的值。 强度削弱 强度削弱是指用较快的操作代替较慢的操作,如 用加法代替乘法。我们通过举例说明什么叫强度 削弱。 强度削弱(续) 强度削弱(续) 注意到:当用t4:=t4-4代替t4:=4*j后,出现 一个问题是第一次进B3时t4没有初值,所以在j本身置初值的那一块末尾给t4置恰当初值4*j。在图中,这个语句放在块B1的最后。 归纳变量删除 1、什么是归纳变量 在做完强度削弱的流图中,注意到:在B3的内循环中, 因为4*j赋给t4 ,j和t4的值步伐一致地变化,每次j的 值减1,t4的值减4;同理,在B2的内循环中,i和t2的 值步伐一致地变化,这样的标识符就叫做归纳变量。 2、什么是删除归纳变量 如果在循环中有两个或更多的归纳变量,也许可以只 留一个,去掉其余的,这个过程称为删除归纳变量。 归纳变量删除(续) 例如: 把强度削减用于B2和B3的内循环,i 和j的作用仅在于决定B4的测试结果。 我们已知道i和t2满足关系t2:=4*i;j和t4 满足关系t4:=4*j,那么测试t2=t4等价 于i=j。我们用t2=t4替代i=j后,B2的 i和B3的j就成了死变量,在这些块中 对它们的赋值也就成了死代码,可以 删除。删除结果如图所示。 归纳变量删除(续) 很明显,这种代码变换是有效的。流图 经过强度削弱和归纳变量删除后,块B2 和块B3的指令数都从原
您可能关注的文档
- 什么是慕课优秀培训书.ppt
- 仁爱七级下Unit ,topic ,section b学习指导书.ppt
- 仁爱七级英语下册期末复习学习指导书.ppt
- 仁爱九级英语上Unit Topic SectionC学习指导书.ppt
- 仁爱九级Unit Topic Section D学习指导书.ppt
- 人类活动地域格局课件学习指导书.ppt
- 仁爱英语九级上册Unit Topic Section C学习指导书.ppt
- 仁爱版七级下UNITTOPICsectionB学习指导书.ppt
- 仁爱版英语七级上册Unit Topic Section A学习指导书.ppt
- 仁爱版八级下册Unit Topic Section B学习指导书.ppt
- 高考物理二轮总复习课后习题专题3 电场与磁场 专题分层突破练7 电场 带电粒子在电场中的运动 (3).doc
- 高中物理二轮总复习课后习题专题能力训练8 电场性质及带电粒子在电场中的运动.doc
- 人教版高中物理必修第一册精品课件 分层作业 第二章 05-重难专题2 初速度为零的匀变速直线 运动常用的结论.ppt
- 人教版高中物理必修第一册精品课件 分层作业 第三章 05-重难专题6 弹力、摩擦力有无及方向的判断.ppt
- 人教版高中物理必修第一册精品课件 第1章 运动的描述 1.质点 参考系 (3).ppt
- 高考物理二轮总复习课后习题题型专项练 选择题专项练(三) (6).doc
- 人教版高中物理必修第一册精品课件 分层作业 02-第一章 01-3.位置变化快慢的描述─速度-第1课时 平均速度和瞬时速度.ppt
- 鲁科版高中物理必修第二册课后习题 第2章 抛体运动 第2章测评.doc
- 鲁科版高中物理必修第二册课后习题 第1章 功和机械能 第2节 功率.doc
- 人教版高中物理必修第一册精品课件 第3章 相互作用——力 2 摩擦力 (2).ppt
文档评论(0)