gpt4 book ai didi

java - 将局部变量添加到方法中会使它们变慢吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:15 24 4
gpt4 key购买 nike

这个问题一共收到了好几段的回答。这是唯一真正告诉我我在寻找什么的句子:

Your examples would make little difference since intermediate computations need to be stored temporarily on the stack so they can be used later on.

事实上,它完美而完整地回答了我的问题 =)

不像所有的废话告诉我“不要问那个问题”。 >_<


如果你有一个方法,你通过增加局部变量的数量来改变它但没有做其他改变,这是否会使方法变慢?这是一个例子:

void makeWindow() {
Display
.getContext()
.windowBuilder()
.setSize(800, 600)
.setBalloonAnimal(BalloonAnimal.ELDER_GOD.withColor(PUCE))
.build();
}

void makeWindow() {
DisplayContext dc = Display.getContext();
WindowBuilder wb = db.windowBuilder();
BalloonAnimal god = BalloonAnimal.ELDER_GOD;
BalloonAnimal puceGod = god.withColor(PUCE);
wb.setSize(800, 600).setBalloonAnimal(puceGod).build();
}

另一个例子:

int beAnExample(int quiche) {
return areGlobalsEvil?
quiche * TAU/5:
highway(quiche, Globals.frenchFrenchRevolution);
}

int beAnExample(int quiche) {
if (areGlobalsEvil) {
int to5 = TAU/5;
int result = quiche * to5;
return result;
} else {
Game french = Globals.frenchFrenchRevolution;
int result = highway(quiche, french);
return result;
}
}

真的,我要问的是:在方法编译为字节码时,这种局部变量的数量是否相关?如果是这样,一旦 Hotspot 开始处理它呢?

这个问题与我正在研究的代码生成器有关。

最佳答案

简单的答案是否定的。局部变量消耗运行时堆栈空间。为它们分配空间只会稍微增加指令的数量。您的示例几乎没有什么区别,因为中间计算需要临时存储在堆栈中,以便以后使用。更多地关注程序的可读性,而不是不必要的微优化。

如果您有兴趣查看类的实际字节码,请研究 javap 程序。

关于java - 将局部变量添加到方法中会使它们变慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762094/

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