gpt4 book ai didi

compiler-construction - "code motion"对 "loop-invariant code motion"意味着什么?

转载 作者:行者123 更新时间:2023-12-04 00:15:36 27 4
gpt4 key购买 nike

在编译器中,短语 "loop-invariant code motion"描述循环中的表达式或代码语句,它们不会随迭代而改变,因此可以移到循环之外以进行一次计算。

我理解短语的“循环不变”部分,但“代码运动”是什么意思?

最佳答案

“代码运动”只是意味着代码被移出循环,因为如果它在循环内重复执行或在循环外执行一次,它不会有任何区别。编译器将不需要在循环中的代码移出循环以进行优化。

这里有一个例子:

for ( int x=0; x < string.length(); x++) {
//other code here
}

如果编译器知道循环中没有任何内容改变字符串的长度,它可以将字符串的长度硬编码到程序中,而不是插入对方法 length() 的实际调用。在适当的字符串上,因为方法调用将始终返回相同的结果,只会浪费内存和处理器时间。方法调用的代码在循环之前移动而不是留在循环内部。这篇文章称之为“代码运动”,尽管我只是称之为简单的旧优化,因为大多数优化都涉及移动代码。 :D

关于compiler-construction - "code motion"对 "loop-invariant code motion"意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com