java優化for迴圈

2021-08-14 08:43:27 字數 3375 閱讀 6171

巢狀迴圈

long

strattime

=system

.nanotime

();for

(inti=

0;i<

10000000;i

++)}

long

endtime

=system

.nanotime

();system

.out

.println

("外大內小耗時:"+(

endtime

-strattime

));

應改為:

long

strattime

=system

.nanotime

();for

(inti=

0;i<10;

i++)

}long

endtime

=system

.nanotime

();system

.out

.println

("外小內大耗時:"

+(endtime

-strattime

));

兩者耗時對比:

外大內小耗時:200192114  

外小內大耗時:97995997

我們可以通過結果看出優化後效能提公升了一倍,所以巢狀迴圈應該遵循「外小內大」的原則,這和你拷貝檔案的時候複製多個小檔案和負責少個大檔案的區別。

提取與迴圈無關的表示式

long

strattime

=system

.nanotime

();for

(inti=

0;i<

10000000;i

++)long

endtime

=system

.nanotime

();system

.out

.println

("未提取耗時:"

+(endtime

-strattime

));

應改為:

long

strattime

=system

.nanotime

();c=a

*b;for

(inti=

0;i<

10000000;i

++)long

endtime

=system

.nanotime

();system

.out

.println

("已提取耗時:"

+(endtime

-strattime

));

兩者耗時對比:

未提取耗時:45973050  

已提取耗時:1955

**中的a*b運算和迴圈是無關的,所以我們應該把他放到迴圈的外面,避免重複計算,我們可以看到優化後的效能提公升了好幾個量級,這可是不容忽視的效率問題。

消除迴圈終止判斷時的方法呼叫

long

strattime

=system

.nanotime

();for

(inti=

0;i<

list

.size

();i

++)long

endtime

=system

.nanotime

();system

.out

.println

("未優化list耗時:"

+(endtime

-strattime

));

應改為:

long

strattime

=system

.nanotime

();int

size

=list

.size

();for

(inti=

0;i<

size;i

++)long

endtime

=system

.nanotime

();system

.out

.println

("優化list耗時:"

+(endtime

-strattime

));

兩者耗時對比:

未優化list耗時:27375  

優化list耗時:2444

list.size()每次迴圈都會被執行一次,這無疑會影響程式的效能,所以應該將其放到迴圈外面,用乙個變數來代替,優化前後的對比也很明顯。

異常捕獲

long

strattime

=system

.nanotime

();for

(inti=

0;i<

10000000;i

++)catch

(exceptione)

}long

endtime

=system

.nanotime

();system

.out

.println

("在內部捕獲異常耗時:"

+(endtime

-strattime

));

應改為:

long

strattime

=system

.nanotime

();try

}catch

(exceptione)

long

endtime

=system

.nanotime

();system

.out

.println

("在外部捕獲異常耗時:"

+(endtime

-strattime

));

兩者耗時對比:

在內部捕獲異常耗時:12150142  

在外部捕獲異常耗時:1955

捕獲異常是很耗資源的,所以不要把try catch放到迴圈內部,優化後同樣有好幾個數量級的提公升。

python優化迴圈 Python 優化迴圈

我希望優化一些由兩個巢狀迴圈組成的 python 我對numpy並不那麼熟悉,但據我所知,它應該能夠幫助我提高這項任務的效率.下面是我編寫的測試 它反映了實際 中發生的情況.目前使用numpy範圍和迭代器比通常的python更慢.我究竟做錯了什麼?這個問題的最佳解決方案是什麼?謝謝你的幫助!impo...

for迴圈優化

某些情況下我們可以不使用迴圈而達到迴圈求解的效果。這裡我想介紹一種for迴圈的優化。例項情況 已知變數n值,求i值 int sum 0,int i 0 while sum n sum i system.out.println i i 注 int sum 0,int i 1 while sum n s...

for迴圈優化

1.原 for int i 0 i 1000 i for int j 0 j 100 j for int k 0 k 10 k testfunction i,j,k 優化方案一 for int i 0 i 10 i for int j 0 j 100 j for int k 0 k 1000 k t...