ama*_*ara 5 java performance micro-optimization
这个问题共收到了几段答案.这是唯一能够告诉我我在找什么的句子:
您的示例几乎没有什么区别,因为中间计算需要临时存储在堆栈上,以便以后可以使用它们.
事实上,它完美地回答了我的问题=)
不像所有的告诉我"不要问这个问题".> _ <
就像你有一个方法,并且你通过增加局部变量的数量但不做其他更改来改变它,它是否会使方法变慢?这是一个例子:
void makeWindow() {
Display
.getContext()
.windowBuilder()
.setSize(800, 600)
.setBalloonAnimal(BalloonAnimal.ELDER_GOD.withColor(PUCE))
.build();
}
Run Code Online (Sandbox Code Playgroud)
要么
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();
}
Run Code Online (Sandbox Code Playgroud)
另一个例子:
int beAnExample(int quiche) {
return areGlobalsEvil?
quiche * TAU/5:
highway(quiche, Globals.frenchFrenchRevolution);
}
Run Code Online (Sandbox Code Playgroud)
要么
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;
}
}
Run Code Online (Sandbox Code Playgroud)
真的,我要问的是:在将方法编译为字节码时,这种局部变量的数量是否相关?如果是这样,一旦Hotspot开始工作呢?
这个问题与我正在研究的代码生成器有关.
小智 5
简单的答案是否定的.局部变量消耗运行时堆栈空间.为它们分配空间只会略微增加指令的数量.您的示例几乎没有什么区别,因为中间计算需要临时存储在堆栈上,以便以后可以使用它们.更多地关注程序的可读性而不是不必要的微优化.
如果您对查看类的实际字节码感兴趣,请调查该javap程序.
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |