局部值编号(LVN):一种编译器优化技术,在基本块(basic block)内部为表达式/计算结果分配“编号”,用来检测重复计算(common subexpression)并进行消除或复用,从而减少指令数量、提升执行效率。(在块内生效;跨基本块通常需要其他分析方法。)
/ˈloʊkəl ˈvæljuː ˈnʌmbərɪŋ/
Local value numbering removes repeated computations within a basic block.
局部值编号会在一个基本块内消除重复的计算。
By assigning the same number to equivalent expressions, the optimizer can reuse earlier results and avoid generating redundant instructions, improving performance without changing program behavior.
通过给等价表达式分配相同的编号,优化器可以复用先前的结果并避免生成多余指令,在不改变程序行为的前提下提升性能。
该术语由三部分直译组合而来:local(局部的)强调作用范围通常限于“基本块”;value(值)指表达式求得的结果;numbering(编号)指用整数标签来代表并对比这些结果。它源自编译器中对表达式等价性进行快速识别的经典思路,常作为教学和工程实现中的基础优化手段出现。