V2EX  ›  英汉词典

Loop-invariant Code Motion

释义 Definition

循环不变代码外提(LICM):一种编译器优化,把在循环中每次迭代结果都不会改变的计算,从循环体中“搬”到循环外(通常搬到循环的前置块 preheader),以减少重复计算、提升性能。
(在某些情况下也可能做“下沉”到循环后,但最常见是外提/提升 hoisting。)

发音 Pronunciation (IPA)

/ˈluːp ɪnˈvɛəriənt koʊd ˈmoʊʃən/

例句 Examples

Loop-invariant code motion can speed up programs by removing redundant work inside loops.
循环不变代码外提可以通过移除循环内部的重复计算来加速程序。

After proving the expression is loop-invariant and has no side effects, the optimizer hoists it to the loop preheader.
在证明该表达式对循环不变且没有副作用之后,优化器会把它外提到循环的前置块。

词源与背景 Etymology

该术语由三部分组成:loop(循环)+ invariant(不变的)+ code motion(代码移动)。字面意思就是“把循环中不变的代码移动到别处”。它源自编译原理与优化领域对“把计算从热点路径移走”的经典思想:只要计算结果在循环内不会变化,并且移动不会改变程序可观察行为(例如副作用、异常、内存别名影响等),就可以安全外提以减少执行次数。

相关词 Related Words

文献与作品 Literary / Notable Works

  • Compilers: Principles, Techniques, and Tools(Aho, Lam, Sethi, Ullman,“龙书”)——在循环优化/代码移动相关章节讨论该类优化思想。
  • Engineering a Compiler(Cooper & Torczon)——在优化器实现中介绍循环不变计算的识别与外提。
  • Advanced Compiler Design and Implementation(Steven Muchnick)——较系统地覆盖代码移动、别名分析与循环优化。
  • Modern Compiler Implementation 系列(Andrew W. Appel)——在中间表示与优化章节中涉及相关技术与变体。
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2416 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 06:06 · PVG 14:06 · LAX 22:06 · JFK 01:06
♥ Do have faith in what you're doing.