在检查之前声明循环限制的收益是多少?

Adr*_*udt 2 java performance for-loop

这样做有什么好处,如果有的话:

for (int i = 0, size = foo.size(); i < size; i++) {}

而不是这个:

for (int i = 0 ; i < foo.size(); i++) {}

(foo是一个List对象)

Jon*_*eet 5

嗯,这意味着你只评估size()一次而不是每次迭代一次.从理论上讲,这可能是一次性能上的胜利 - 计算尺寸实际上是非常昂贵的.(例如,你可能有一个链表实现,它不记得它的大小,但实际上必须遍历整个列表.可以说,如果你发现自己处于这种情况,更好的解决方案就是使用更好的数据结构.如果size()价格昂贵,那么通过索引访问也可能很昂贵.)

实际上,标准集合具有非常快速的size()方法,因此它通常是无关紧要的,并且会损害可读性(IMO).当然,如果你不需要索引,那么使用增强的for循环更可读......