使用list.size()或变量多次使用?(局部优化)

Mat*_*oli 3 java size optimization list

我有一个简单的函数叫做很多.

在这个函数里面,我有很多调用列表大小(包含大约10个元素):

list.size()
Run Code Online (Sandbox Code Playgroud)

我使用临时变量来获取大小一次是否更快,或者每次调用size()方法更快?

更新:这是一个ArrayList.

注意:我知道自己在做什么,我不是在寻找有关优化以及应该或不应该如何进行的演讲.我只是在寻找答案.

Jon*_*eet 10

这完全取决于实施.你没有指定类型list- 我认为它是一个List<E>或一些具体的实现.

在一些实现中,例如ArrayList<E>它非常便宜 - 基本上是现场访问.这只是记录在被固定的时间,诚然方面:

size,isEmpty,get,set,iterator,和listIterator在固定时间的操作运行.

在其他情况下,它可能很昂贵.该界面不提供任何保证.在大多数实现中,我希望它是便宜的(恒定时间),但你永远不知道......


Jig*_*shi 7

这取决于执行的List 望着ArrayList的源

/**
  225        * Returns the number of elements in this list.
  226        *
  227        * @return the number of elements in this list
  228        */
  229       public int size() {
  230           return size;
  231       }
  232   
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用局部变量或调用此方法并不重要