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