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

标签 java performance

差异可能很小或不存在,但哪个更有效,为什么?

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

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

最佳答案

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

这种微观优化不值得付出努力,最好以更清晰、更易于理解的解决方案为目标。恕我直言,哪个恰好是第一个。

关于java - 哪一个更有效率?缓存for循环中使用的方法调用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022606/

相关文章:

android - 适用于Eclipse的Android SDK中的慢速按钮触发

java - 在 Java 中填充字节数组

java - 什么时候应该实现 Runnable?

java Locale.Builder setExtension(Locale.UNICODE_LOCALE_EXTENSION

java - JavaFX 组合框上的 "No select item"?

Mysql:为什么在这种情况下 WHERE IN 比 JOIN 快得多?

java - 使用 ArrayList 排序进行图形绘制排序

c# - VS2010 Test Professional/Team Server 的替代品?

performance - Java 8,列表的第一次处理比后续处理慢

java - ntlm 在 java 中的实现?