读书人

for循环的不同写法是不是有性能性能差

发布时间: 2013-08-09 15:16:24 作者: rapoo

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的大小已经改变,但你没有每次重新取
[解决办法]
测试过循环次数百万以上速度才会有很小的变化,和可读性比,忽略不计

读书人网 >J2SE开发

热点推荐