【发布时间】:2016-07-18 06:19:32
【问题描述】:
我的问题是关于使用 Android 编译器在 java 中进行优化。每次迭代都会调用下面的map.values(),还是Android编译器会对其进行优化。
LinkedHashMap<String, Object> map;
for (Object object : map.values())
{
//do something with object
}
同样,这里是另一个例子。每次迭代都会调用 aList.size() 吗?
List<Object> aList;
for (int i = 0; i < aList.size(); i++)
{
object = aList.get(i);
//do something with i
}
毕竟,每次迭代都调用方法真的很重要吗? Map.values() 和 List.size() 有什么作用吗?
【问题讨论】:
-
这是一个Java问题,与Android没有任何关系。
-
我理解对这个问题的兴趣,但出于任何实际目的,我强烈建议在优化代码之前对其进行分析。
-
@PhilippReichart - 询问一种编码风格是否比另一种具有固有的性能优势是非常有意义的。此外,分析也有其局限性。如果您正在为 Android 编写代码,您的代码可能会在各种平台上运行,其中一些可能有 JIT 编译器,有一些没有,还有一些甚至还不存在。
-
@TedHopp 我同意。我只是想提醒人们不要过早优化,这通常比在这里或那里失去一个循环更糟糕。