gpt4 book ai didi

java - 在 for 循环条件中使用 string.length() 比初始化为此的局部变量更好,为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:47 24 4
gpt4 key购买 nike

我的印象是,在 for 循环条件下,使用变量代替对字符串函数 length() 的方法调用总是更好。虽然看起来和Saint Hill分析的刚好相反在下面的回答中

https://stackoverflow.com/a/11876086/6517886

for (int i = 0; i < data.length(); i++) {
...
}

final int len = data.length();
for (int i = 0; i < len; i++) {
...
}

这是什么原因?

最佳答案

Defining a variable, at all, requires a stack operation in the method byte code.

不,它没有。它需要在调用方法时在堆栈帧中分配一个额外的槽。无论如何分配堆栈帧。分配额外的槽没有开销。唯一改变的是字节码中的一个常量,说明堆栈帧需要多大。

具体来说,没有用于声明局部变量的字节码指令。

But the optimizations, from recognizing your algorithm, could fast track that repeat operation in the actual machine code, without the overhead of variable allocation.

没有这样的开销。

这都是废话。

关于java - 在 for 循环条件中使用 string.length() 比初始化为此的局部变量更好,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572038/

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