哪一个更有效率?用于for循环的缓存方法调用结果

时间:2012-06-13 20:12:40

标签: java performance

差异可能微不足道或不存在,但哪一个更有效,为什么?

int nItems = param.getItemList().size();
for (...) {
    if (nitems == 1) doSomething();
}

for (...) {
    if (param.getItemList().size() == 1) doSomething();
}  

4 个答案:

答案 0 :(得分:8)

理论上第一个会更快(你有没有对它进行分析?你应该!),因为它会在循环之外拉出一个经常使用的方法调用。但是,如果有足够的时间,JIT编译器可能会优化/内联方法调用,使两种解决方案在性能方面无法区分。

这种微观微观优化不值得努力,更好地瞄准解决方案,使其更清晰,更易于理解。其中恕我直言的第一个。

答案 1 :(得分:1)

在循环外进行方法调用更有效。有时它甚至可能很重要。第二种方法可能更有效的一种情况是for循环的条件导致循环被完全跳过。

答案 2 :(得分:0)

第一种方法更有效,因为不需要多次调用该方法。但是,由于getItemList()size()似乎都是访问者,因此差异微乎其微。

答案 3 :(得分:0)

第一个,因为你不需要为循环的每次迭代进行两次调用