日期:2014-05-20  浏览次数:20883 次

for循环的不同写法是否有性能性能差异?
		ArrayList<String> arr = new ArrayList<String>();
// add elements into arr
for (int i = 0; i < arr.size(); i++) {
// opt
}
//and
for (int i = 0, len = arr.size(); i < len; i++) {
// opt
}

这两种for的写法是否真的有性能差异呢?
按理说上边的写法会在每次循环都调用arr.size()方法 这样会不会稍微影响性能呢?
性能优化 Java

------解决方案--------------------
这个写法对新版的jdk没啥性能影响,看一下ArrayList的原代码就明白了。
------解决方案--------------------
一般当数据量小的时候看不出什么猫腻,也不在乎那点效率了。你可以弄大点试试
------解决方案--------------------
应该没什么影响,list读出来的时候就知道大小了。放在缓存里!
------解决方案--------------------
不考虑多线程并发的话,没区别
如果有额外线程也在操作这个list,比如做了remove操作,那么如果你提前把size的值取出来而不放在循环里每次都取,那么会报出数组越界的异常,因为循环的时候,list的大小已经改变,但你没有每次重新取
------解决方案--------------------
测试过循环次数百万以上速度才会有很小的变化,和可读性比,忽略不计