1
我創建了一個樣本類,其中包含兩個整數數組;一個排序和其他未排序。我正在打印數組的內容。用於打印排序數組的時間是打印未排序數組所需時間的兩倍。打印排序和未排序數組的時間差
參考代碼:
public class Demo {
public static void main(String[] args) {
int[] array1 = {1,2,3,4,5,6,7,8,9,10};
int[] array2 = {10,3,4,2,6,7,8,1,5,9};
long start = System.nanoTime();
for(int a:array1){
System.out.println(a);
}
System.out.println("Time required by sorted array\t"+(System.nanoTime() - start)/1000000000.0);
start = System.nanoTime();
for(int a:array2){
System.out.println(a);
}
System.out.println("Time required by unsorted array\t"+(System.nanoTime() - start)/1000000000.0);
}
}
輸出:
1
2
3
4
5
6
7
8
9
10
Time required by sorted array 3.89505E-4
10
3
4
2
6
7
8
1
5
9
Time required by unsorted array 1.37727E-4
爲什麼有時間差,而顯示的數字。此外,我讀的地方排序數組過程更快,這裏的情況是不同的。
第一次部分還包括加載所有System.out類所需的時間。我敢打賭,如果您顛倒了程序的順序,先打印未排序的值,您將看到相反的行爲。對Java應用程序進行性能分析非常困難 - 網上有很多關於陷阱的資源及其解決方案。 – yshavit
要擴大yshavit的評論這裏是你的例子改變的順序:http://ideone.com/I3e0Bf - 突然「未排序」更慢 – UnholySheep
還有一個運行它是不夠的。你需要幾十或幾百次運行來做出這樣的聲明 – efekctive