迴圈次數較多,迴圈層數較多時,程式效率問題非常明顯。優化後的多重for迴圈可以提公升大半的效率。
一、例項化變數盡量放在for迴圈體外,只例項化一次。
二、普通變數改為暫存器變數,如i++改為++i。前置遞增運算避免了不必要的工作,它把值加1後直接返回改變了運算物件本身。
三、條件比較使用《要快於<=,同理》要快於<=。
四、把外層可以計算的盡可能放到外層;有判斷條件的語句與迴圈不相關的操作語句盡量放在for外面。
五、應將最長的迴圈放在最內層,迴圈次數最少的放在最外層,以減少cpu跨切迴圈層的次數。
for (row = 0; row < 100; ++row)
}
如上述**,效率低。把row放在內層,可以提高效率。
六、對於乙個可結合和可交換的合併操作來說,可以通過將一組合併操作分割成2個或更多的部分,並在最後合併結果來提高效能。
原理是–普通**只能利用cpu的乙個暫存器,分割後可以利用多個暫存器。當分割到達乙個數量時,暫存器用完,效能不再提公升,甚至會開始下降。**示例如下:
//一般情況**
for (int i = 1; i < n+1; ++i)
//迴圈分割後**
for (int i = 1; i < n; i+=2)
測試發現,採用這個方法,浮點數計算效能的提公升,明顯大於整數;乘法計算效能提公升,略大於加法。 多重for迴圈效能分析
有人對著組合語言不夠一屑,認為那已經是古老的低階語言,是當今的非主流語言,學了也不知道有什麼用。是的,我們不得不承認,作為一門古老的語言,彙編已經完成了歷史賦予它的使命,但是我們知道,我們現在所使用的任何高階語言在編譯的時候都是被轉化為組合語言來執行的,也就是說,無論我們在上層做了何種的抽象,引入了...
java中for迴圈效能的優化 一
for 迴圈效能測試 多層for迴圈的巢狀順序 由於cpu在內外之間的切換會有一定的開銷,因此如果可能的話,應該盡可能較少內外層迴圈切換的次數.只需使最外層迴圈的次數最少,內層迴圈次數多即可.若觀點有誤請大神們多多指教 public class test2 long endtime1 system....
Java 迴圈效能分析
最近coding的時候對迴圈的效能很好奇,面對多種迴圈方式,迭代器 for迴圈 foreach迴圈 lambda的foreach迴圈。如果單論 美觀,個人偏向於lambda的foreach迴圈和foreach迴圈。但是這樣唐突的選擇很有可能造成效能的下降。後面本人就分析了一下各個迴圈之間的效率 一 ...