数组结构
示例代码:
/*排列结构三种循环扫描效率的比较*
@org.junit.Test
公共语音测试13 (
列表列表=new ArrayList (100000;
for(intI=0; i1000; I ) {
list.add(I;
}
/*普通的for循环*
long a=System.currentTimeMillis (;
int size=list.size (;
for(intI=0; I
以下比较结果为大概率事件,请参考
1000数据量需要时间的结果:迭代器需要时间=for循环需要时间的常规for循环需要时间: 12--ms
增强的for循环时间:7--ms
反复器时间:6--ms
10000数据量需要时间的结果:迭代器需要时间;常规for循环需要时间: 67--ms
增强的for循环时间: 53--ms
反复器时间: 47--ms
10W数据量需要时间的结果:迭代器需要时间;常规for循环需要时间: 540--ms
增强的for循环时间: 865--ms
迭代时间: 439--ms
30W数据量需要时间的结果:迭代器需要时间=for周期需要时间的常规for周期需要时间: 1855--ms
增强的for循环时间: 1281--ms
迭代时间: 1224--ms
50W数据量需要时间的结果:迭代器需要时间=for周期需要时间的常规for周期需要时间: 2844--ms
增强的for循环时间: 2245--ms
迭代器时间: 2215--ms毫秒
100瓦数据量需要时间的结果:迭代器需要时间;常规for循环需要时间: 5149--ms
增强的for循环时间: 4785--ms
迭代时间: 4417--ms
500W的数据量需要时间,结果:这三种方式大致相同
正常的for循环需要时间: 20698--ms
增强的for循环时间: 20814--ms
迭代时间: 20963--ms
1000W数据量需要时间的结果:迭代器需要时间;常规for循环需要时间: 42957--ms
增强的for循环时间: 39645--ms
迭代时间: 39143--ms
链表结构
示例代码:
/*链表结构三种循环遍历效率的比较*
@org.junit.Test
公共语音测试14 (
链接列表列表=new linked list (;
for(intI=0; i1000000; I ) {
list.add(I;
}
/*普通的for循环*
long a=System.currentTimeMillis (;
int size=list.size (;
for(intI=0; I
以下比较结果为大概率事件,请参考
1000数据量需要时间的结果: for循环的强化需要时间=迭代程序需要时间的普通for循环需要时间: 17--ms
增强的for循环时间:5--ms
反复器时间:7--ms
10000数据量需要时间的结果:迭代器需要时间=for周期需要时间的常规for周期需要时间: 115--ms
增强的for循环时间: 50--ms
反复器时间: 43--ms
10W数据量需要时间结果:迭代器需要时间=正常for循环需要时间正常for循环需要时间: 5350--ms
增强的for循环时间: 403--ms
迭代时间: 406--ms
30W数据量需要时间的结果:强化for循环时间通常for循环时间: 54948--ms
增强的for循环时间: 1261--ms
迭代时间: 1272--ms
50W数据量需要时间的结果:迭代器需要时间=for周期需要时间的常规for周期需要时间: 327258--ms
增强的for循环时间: 1936--ms
迭代器时间: 1986--ms毫秒
总结:
对于数组结构遍历1w以下的数据量,三种遍历方式差异不大,1w以上需要根据具体数量选择合适的方式,迭代器和扩展for环路一般优于普通for环路
无论数据量如何,都建议不要使用常规的for循环来遍历链接列表结构。 常规for循环的性能太慢,迭代程序和for循环的性能没有太大差异,可以根据实际场景进行选择