是否缓存了ArrayList.size()方法?

Pet*_*rdk 18 java caching arraylist

我想知道,size()你可以调用现有ArrayList<T>缓存的方法吗?或者在性能关键代码中,我只是将其存储size()在本地int中?

当你不在调用之间添加/删除项目时,我希望它确实被缓存size().

我对吗?

更新
我不是在谈论内联或类似的事情.我只是想知道方法size()本身是否在内部缓存值,或者它是否每次调用时都会动态计算.

Jon*_*eet 13

我不认为我会说它是"缓存"的 - 但它只是存储在一个字段中,所以它足够快,可以经常调用.

Sun JDK的实现size()只是:

public int size() {
    return size;
}
Run Code Online (Sandbox Code Playgroud)

  • @Michael但是JIT足够智能内联这样的调用,所以你没有函数调用开销. (6认同)
  • @spong:由于Sun JVM自版本1.2以来就已经这样做了(即从1998年左右开始),我认为我们可以假设所有这些都做了,除了嵌入式版本.参考:http://java.sun.com/developer/onlineTraining/Programming/JDCBook/perf2.html (2认同)

Tim*_*thy 5

是。

快速浏览一下Java源代码会告诉您答案。