📜  编译器设计中的窥孔优化

📅  最后修改于: 2021-06-28 06:50:49             🧑  作者: Mango

窥孔优化是对一小部分代码执行的一种代码优化。它是在一段代码中的非常少的一组指令上执行的。

它基本上是在替换理论上工作的,在替换理论中,一部分代码被更短,更快的代码替换,而输出不变。

窥孔是机器相关的优化。

窥孔优化的目标:

窥孔优化的目标是:

  1. 为了提高性能
  2. 减少内存占用
  3. 减少代码大小

窥孔优化技术:

  1. 冗余加载和存储消除:
    在这种技术中,消除了冗余。
    Initial code:
    y = x + 5;
    i = y;
    z = i;
    w = z * 3;
    
    Optimized code:
    y = x + 5;
    i = y;
    w = y * 3; 
  2. 恒定折叠:
    可以由用户自己简化的代码也得到了简化。
    Initial code:
    x = 2 * 3;
    
    Optimized code:
    x = 6; 
  3. 强度降低:
    消耗较高的执行时间的运算符通过运算符消耗较少的执行时间更换。
    Initial code:
    y = x * 2;
    
    Optimized code:
    y = x + x;    or     y = x << 1;
    
    Initial code:
    y = x / 2;
    
    Optimized code:
    y = x >> 1; 
  4. 空序列:
    删除无用的操作。
  5. 合并操作:
    几个操作由一个等效操作代替。