【发布时间】:2018-11-23 11:16:31
【问题描述】:
我有一个返回对象的方法,我需要多次调用两个方法。所有这些都必须写在执行的动作事件中。
您认为哪一个是更好的解决方案?哪个消耗资源少,速度快?
public void actionPerformed(ActionEvent e) {
Object obj1 = getObject().getSomething1();
Object obj2 = getObject().getSomething2();
doSomething1(obj1);
doSomething2(obj2);
doSomething3(obj1);
}
或者更好
public void actionPerformed(ActionEvent e) {
doSomething1(getObject().getSomething1());
doSomething2(getObject().getSomething2());
doSomething3(getObject().getSomething1());
}
【问题讨论】:
-
这是基于意见的。不过我会说,在许多情况下,我更喜欢将中间数据存储在变量中。从那时起,它使调试变得更容易,您只需检查变量的值。不过,就程序的操作而言,我希望它们在大多数情况下都可以优化为相同的代码。
-
我相信编译器无论如何都会将第一个版本转换为第二个版本,因此运行时性能不会受到影响。
-
"哪个消耗资源少,速度快?"首先。问题是还有多少资源,多少快,它真的很重要。
-
@varontron 我不太确定。我怀疑 java 编译器能够识别没有副作用的方法,因此对这些方法调用执行 CSE。
-
@varontron 不,编译器肯定不会; JIT 可能,只是,如果一段时间后它可以解决缺乏副作用的问题。
标签: java performance