第5章代码优化..ppt

通过上述各种优化,最终得到图5–25的优化结果。比较图5–21和图5–25可知:B2和B3中的四元式从4条减为2条,而且一条是由乘法变为加法;B5中的四元式由9条变为3条,B6中的四元式由8条变为2条。以上这些优化对循环执行来说,效果是非常明显的。虽然B1的四元式由4条变为现在的B1和B2共6条,但因其仅被执行一次,所以影响甚微。 图5–24 强度削弱后的程序流图 图5–25 删除归纳变量后的程序流图 例5.8 试对图5-17给定的程序流图进行强度削弱优化。 [解答] 由图5–17的B3看到,T2是递归赋值的变量,每循环一次增加一个常量10。因T3=T2 +T1计算T3值时要引用T2的值,它的另一运算对象是循环不变量T1,所以每循环一次,T3值的增量与T2相同,即常数10。因此,我们可以对T3进行强度削弱,即将T3=T2 +T1外提到前置结点B2中,同时在T2=T2 +10的后面给T3增加一个常量10。进行以上强度削弱后的结果如图5–18所示。 图5–17 例5.8程序流图 图5–18 例5.8强度削弱后的流图 3.删除归纳变量 如果循环中对变量I只有惟一的形如I=I±C的赋值,且其中C为循环不变量,则称I为循环中的基本归纳变量。如果I是循环中一基本归纳变量,

文档评论(0)

1亿VIP精品文档

相关文档