java 各类循环性能分析

1.ArrayList集合测试(一百万调数据测试)并且循环里面不处理数据的情况下
public static void main(String[] args) {
ArrayList<Integer> alist = new ArrayList<Integer>();
for (int i = 0; i < 10000000; i++) {
alist.add(i);
}
long startTime;
long endTime;

//style1 增强for循环
startTime = System.nanoTime();
for (int i : alist) {
}
endTime = System.nanoTime();
System.out.println("style1:" + (endTime - startTime) + "毫微秒");

//style2 for循环 第一种方式
startTime = System.nanoTime();
for (int i = 0; i < alist.size(); i++) {
}
endTime = System.nanoTime();
System.out.println("style2:" + (endTime - startTime) + "毫微秒");


//style3 for循环 第二种方式
startTime = System.nanoTime();
int size = alist.size();
for (int i = 0; i < size; i++) {
}
endTime = System.nanoTime();
System.out.println("style3:" + (endTime - startTime) + "毫微秒");

//style4 for循环 第三种方式
startTime = System.nanoTime();
for (int i = alist.size() - 1; i > -1; i--) {
}
endTime = System.nanoTime();
System.out.println("style4:" + (endTime - startTime) + "毫微秒");
}
style1:22743400毫微秒
style2:4275000毫微秒
style3:3945400毫微秒
style4:3266700毫微秒

测试结果:性能 style4>style3>style2>style1 (多次测试的情况下 style3>style4>style2>style1 or style4>style3>style2>style1 )

1秒=1000豪秒;1毫秒=1000微秒;1微秒=1000毫微秒。

2.LinkedList集合测试
修改 上述代码 ArrayList<Integer> alist = new ArrayList<Integer>(); 改为 LinkedList<Integer> alist = new LinkedList<Integer>();

style1:103662600毫微秒
style2:2925400毫微秒
style3:2397999毫微秒
style4:2297000毫微秒
测试结果:性能 style4>style3>style2>style1 (多次测试的情况下 style3>style4>style2>style1 or style4>style3>style2>style1  )


2.LinkedList 集合循环中获取数据的情况下(10万条测试数据)
public static void main(String[] args) {
LinkedList<Integer> alist = new LinkedList<Integer>();
for (int i = 0; i < 100000; i++) {
alist.add(i);
}
long startTime;
long endTime;

//style1
startTime = System.nanoTime();
for (int i : alist) {
int a=i;
}
endTime = System.nanoTime();
System.out.println("style1:" + (endTime - startTime) + "毫微秒");

//style2
startTime = System.nanoTime();
for (int i = 0; i < alist.size(); i++) {
int a=alist.get(i);
}
endTime = System.nanoTime();
System.out.println("style2:" + (endTime - startTime) + "毫微秒");


//style3
startTime = System.nanoTime();
int size = alist.size();
for (int i = 0; i < size; i++) {
int a=alist.get(i);
}
endTime = System.nanoTime();
System.out.println("style3:" + (endTime - startTime) + "毫微秒");

//style4
startTime = System.nanoTime();
for (int i = alist.size() - 1; i > -1; i--) {
int a=alist.get(i);
}
endTime = System.nanoTime();
System.out.println("style4:" + (endTime - startTime) + "毫微秒");
}


测试结果:
style1:3182100毫微秒
style2:4634109800毫微秒
style3:3947321900毫微秒
style4:4058274000毫微秒
性能 style1>style3>style4>style2(多次测试的情况下 style1>style3>style4>style2 or style1>style3>style2>style4 )

3.ArrayList集合循环中获取数据的情况下(10万条测试数据)
测试结果:
style1:1953700毫微秒
style2:1068100毫微秒
style3:566600毫微秒
style4:781900毫微秒

性能 style3>style4>style2>style1(多次测试的情况下 style4>style3>style2>style1 or style3>style4>style2>style1

建议 咋们在ArrayList集合中遍历数据 使用for循环遍历
LinkedList集合中遍历数据 使用增强for循环


原文:https://blog.csdn.net/onezg/article/details/53081988
 
posted @ 2020-08-14 11:47  颂先生  阅读(223)  评论(0编辑  收藏  举报