Java性能優化--for循環

最近在學習關於Java性能優化及JVM的一些知識,無意中想起for循環的應用,畢竟太多的算法題和實際開發都會用到它,也就萌生了對它進行優化的想法。

在實踐之餘,我也在網上查閱了很多資料,其中找到了這樣一篇博文https://blog.csdn.net/liushuijinger/article/details/41546347,寫的很好,記錄下來以便日後查閱。

不過這裏要提出的是,同一段代碼在不同機器和不同版本jdk中運行可能是會出現很大差別的,我用的jdk版本:1.8.0_161,CPU:Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz。

以下是我進行的循環嵌套優化測試:

long stratTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
    for (int j = 0; j < 10; j++) {
    }
}
long endTime = System.nanoTime();
System.out.println("外大內小耗時:" + (endTime - stratTime));

stratTime = System.nanoTime();
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10000; j++) {
    }
}
endTime = System.nanoTime();
System.out.println("外小內大耗時:" + (endTime - stratTime));

可以看出,在10*10000的數量級上外小內大循環是優於外大內小循環的,再看看下面的測試:

long stratTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
	for (int j = 0; j < 10; j++) {
	}
}
long endTime = System.nanoTime();
System.out.println("外大內小耗時:" + (endTime - stratTime));

stratTime = System.nanoTime();
for (int i = 0; i < 10; i++) {
	for (int j = 0; j < 100000; j++) {
	}
}
endTime = System.nanoTime();
System.out.println("外小內大耗時:" + (endTime - stratTime));

在10*100000的數量級上外大內小已經遠超外小內大循環,數量級越大,外大內小循環的優勢也就越大。因此對於這個循環嵌套優化應該是有待討論的。

以上是我對於for循環優化提出的異議,其餘請參考所提及的博文。

歡迎大佬們指教或提出異議。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章