00-Java数组遍历性能对比
三种遍历方式性能对比
循环与数组的
length
比较1
2
3
4
5
6
7
8
9
10public class JavaMain {
static Object[] objs = new Object[10000000];
static int zero() {
int sum = 0;
for(int i = 0; i < objs.length; i++) {
sum ^= objs[i].hashCode();
}
return sum;
}
}将数组
length
存在方法栈中1
2
3
4
5
6
7
8
9
10
11public class JavaMain {
static Object[] objs = new Object[10000000];
static int one() {
int sum = 0;
int len = objs.length;
for(int i = 0; i < len; i++) {
sum ^= objs[i].hashCode();
}
return sum;
}
}for-each循环
1
2
3
4
5
6
7
8
9
10public class JavaMain {
static Object[] objs = new Object[10000000];
static int two() {
int sum = 0;
for (Object obj : objs) {
sum ^= obj.hashCode();
}
return sum;
}
}
测试速度
1 | public class JavaMain { |
测试结果
1 | result = 360970567, time = 1.393 |