1. 程式人生 > 實用技巧 >java 各類迴圈效能分析

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.迴圈中獲取資料的情況下(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 )
原文:https://blog.csdn.net/onezg/article/details/53081988