差异可能微不足道或不存在,但哪一个更有效,为什么?
int nItems = param.getItemList().size();
for (...) {
if (nitems == 1) doSomething();
}
或
for (...) {
if (param.getItemList().size() == 1) doSomething();
}
答案 0 :(得分:8)
理论上第一个会更快(你有没有对它进行分析?你应该!),因为它会在循环之外拉出一个经常使用的方法调用。但是,如果有足够的时间,JIT编译器可能会优化/内联方法调用,使两种解决方案在性能方面无法区分。
这种微观微观优化不值得努力,更好地瞄准解决方案,使其更清晰,更易于理解。其中恕我直言的第一个。
答案 1 :(得分:1)
在循环外进行方法调用更有效。有时它甚至可能很重要。第二种方法可能更有效的一种情况是for
循环的条件导致循环被完全跳过。
答案 2 :(得分:0)
第一种方法更有效,因为不需要多次调用该方法。但是,由于getItemList()
和size()
似乎都是访问者,因此差异微乎其微。
答案 3 :(得分:0)
第一个,因为你不需要为循环的每次迭代进行两次调用