值编号(value numbering):编译器中的一种经典优化技术,通过给表达式/计算结果分配“编号”(代表其值的身份),来识别重复计算与等价表达式,从而实现消除冗余计算(common subexpression elimination)、改进代码效率等。常见类型包括局部值编号(Local Value Numbering)和全局值编号(Global Value Numbering, GVN)。
/ˈvæl.juː ˈnʌm.bər.ɪŋ/
The compiler uses value numbering to remove repeated calculations.
编译器使用值编号来消除重复计算。
With global value numbering enabled, the optimizer can prove that two expressions compute the same value across different basic blocks, so it reuses the earlier result.
启用全局值编号后,优化器可以证明两个表达式在不同基本块中计算出相同的值,因此复用先前的结果。
该短语由 value(值) + numbering(编号/赋号) 构成,字面意思是“给值编号”。在编译原理语境中,“编号”并非简单计数,而是为表达式的语义结果分配一个可比较的标识,用来判断“是否已经计算过同一个值”。