fbpx
维基百科

循环不变代码外提

循环不变代码外提(英語:loop-invariant code motion,缩写LICM)在计算机编程中是指将循环不变的语句或表达式移到循环体之外,而不改变程序的语义。循环不变代码外提在英文中又被称为hoistingscalar promotion,是编译器中常见的优化方法。

示例

假设有如下代码:

for (int i = 0; i < n; i++) {  x = y + z;  a[i] = 6 * i + x * x; } 

其中x = y + zx * x这两步运算是循环不变的,会在优化中被移出循环体之外。经LICM优化后的代码为:

x = y + z; t1 = x * x; for (int i = 0; i < n; i++) {  a[i] = 6 * i + t1; } 

参见

参考文献

  • Aho, Alfred V.; Sethi, Ravi; & Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools. Addison Wesley. ISBN 0-201-10088-6.

循环不变代码外提, 英語, loop, invariant, code, motion, 缩写licm, 在计算机编程中是指将循环不变的语句或表达式移到循环体之外, 而不改变程序的语义, 在英文中又被称为hoisting, 或scalar, promotion, 是编译器中常见的优化方法, 示例, 编辑假设有如下代码, 其中x, z与x, x这两步运算是循环不变的, 会在优化中被移出循环体之外, 经licm优化后的代码为, 参见, 编辑循环不变量参考文献, 编辑aho, alfred, sethi, ravi, u. 循环不变代码外提 英語 loop invariant code motion 缩写LICM 在计算机编程中是指将循环不变的语句或表达式移到循环体之外 而不改变程序的语义 循环不变代码外提在英文中又被称为hoisting 或scalar promotion 是编译器中常见的优化方法 示例 编辑假设有如下代码 for int i 0 i lt n i x y z a i 6 i x x 其中x y z与x x这两步运算是循环不变的 会在优化中被移出循环体之外 经LICM优化后的代码为 x y z t1 x x for int i 0 i lt n i a i 6 i t1 参见 编辑循环不变量参考文献 编辑Aho Alfred V Sethi Ravi amp Ullman Jeffrey D 1986 Compilers Principles Techniques and Tools Addison Wesley ISBN 0 201 10088 6 Compiler Optimizations Hoisting 这是一篇與程序设计相關的小作品 你可以通过编辑或修订扩充其内容 查论编 取自 https zh wikipedia org w index php title 循环不变代码外提 amp oldid 66868473, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。