常见的代码优化技术
常见的代码优化技术有:复写传播,删除死代码, 强度削弱,归纳变量删除
复写传播:
图片说明
复写语句:形式为f = g 的赋值
1.优化过程中会大量引入复写
2.复写传播变换的做法是在复写语句f = g后,尽可能用g代表f
3.复写传播变换本身并不是优化,但它给其他优化带来机会
3.1常量合并(编译时可完成的计算)
3.2死代码删除
死代码删除
1.死代码是指计算的结果决不被引用的语句
2.一些优化变换可能会引起死代码
代码外提
1.代码外提是循环优化的一种
2.循环优化的其它重要技术
2.1归纳变量删除
2.1强度削弱
例:
while(i <= limit - 2) ...
// 代码外提后变成
t = limit - 2;
while(i <= t) ...
归纳变量删除
j = j - 1
t4 = 4 * j
t5 = a[t4]
if t5 > value goto B3
1.j和t4的值步伐一致地变化,这样的变量叫作归纳变量
2.在循环中有多个归纳变量时,也许只需要留下一个
3.这个操作由归纳变量删除过程来完成
4.对本例可以先做强度削弱,它给删除归纳变量创造机会
强度削弱
1.强度削弱的本质是把强度大的运算换算成强度小的运算,例如将乘法换成加法运算。
防止以后找不到,就保存在这里