第一部分說明:1 將大的迴圈放到內測,小的迴圈放到外側,確實能提高效率
/*** 全面測試巢狀多層for迴圈的效能。
* * @author 老紫竹的家(laozizhu.com)
* */
public class testforloop }}
system.out.println(system.currenttimemillis() - t);
// 大迴圈在外面,小迴圈在裡面,變數統一生成
t = system.currenttimemillis();
int i, j, k;
for (i = 1; i <= large; i++) }}
system.out.println(system.currenttimemillis() - t);
// 小迴圈在外面,大迴圈在裡面,變數每次生成
t = system.currenttimemillis();
for (int kk = 1; kk <= small; kk++) }}
system.out.println(system.currenttimemillis() - t);
// 小迴圈在外面,大迴圈在裡面,變數統一生成
t = system.currenttimemillis();
int ii, jj, kk;
for (kk = 1; kk <= small; kk++) }}
system.out.println(system.currenttimemillis() - t);}}
測試執行結果
5625
3125
609594
注意,不同機器結果肯定不同,且有可能是如下的結果
5641
3140
594625
測試結論:
1 將大的迴圈放到內測,小的迴圈放到外側,確實能提高效率
2 變數的宣告,原則上是能提高效率的(從第乙個看,效果差距很大),但在迴圈次數少的時候,並不明顯,有時反倒會影響效率。
分析:
內大外小
for( int k=0;k <10;k++)
} }
k <10;k++; 執行10次
j <100;j++ 執行10*100次
i <1000;i++ 執行10*100*1000次
function(i,j,k); 執行10*100*1000次
共執行語句數=(10+10*100+10*100*1000)*2+10*100*1000=3002020
內小外大
for( int k=0;k <1000;k++)
} }
k <1000;k++; 執行1000次
j <100;j++ 執行1000*100次
i <10;i++ 執行10*100*1000次
function(i,j,k); 執行10*100*1000次
共執行語句數=(1000+1000*100+10*100*1000)*2+10*100*1000=3202000
所以執行效率應該是內大外小更高一寫
內小外大-內大外小=3202000條語句-3002020條語句=199980條語句
第二部分:由++變成--
for(
inti
=1000
;i>0;i
--)}}
迴圈巢狀的優化
基本for迴圈巢狀九九乘法表 public class test system.out.println 基本for迴圈列印100以內的質數 public class test if flag flag true 100以內的質數最優化 使用標籤 public class test system.ou...
巢狀迴圈的優化
今天拿到這樣乙個需求 有map a和map b,這兩個map都持有著乙個同樣的key id,其對應的value可能相同,也可能不相同。現在需要對兩個map中該key對應的value相同的鍵值對做些特殊的操作。這是個很簡單的需求,很簡單,我直接乙個迴圈裡巢狀另乙個迴圈去實現這個功能需求 for map...
23 迴圈巢狀中演算法優化
100000以內的所有質數的輸出 體會演算法的優化一 public class primenumber1 if fag fag true system.out.println 質數個數為 even long end system.currenttimemillis system.out.printl...