耗時計算移出迴圈

2021-05-06 17:24:08 字數 767 閱讀 5990

迴圈常常是熱點所在。本節前面討論了很多針對迴圈的優化建議,這一小節仍然將迴圈作為研究物件,不過這次考慮的是迴圈體。因為迴圈體中的程式**會被執行多次,所以應當儘量減少其中的耗時計算。

void  function( byte  * pixel,  int  width,  int  height)    

觀察上面函式的實現方法,因為函式體中的計算語句非常複雜,因此可以考慮將其移出迴圈。基於這樣的考慮,我們將上述函式改寫如下:

voidfunction(byte* pixel,intwidth,intheight)  

}  這樣已經可以讓計算量大大減少了。但是我們仍然可以做進一步的優化,即將計算量較大的乘法運算完全移出迴圈,改寫後的**如下:

voidfunction(byte* pixel,intwidth,intheight)  

}  如此一來,原本複雜的迴圈體就通過逐層改進得到了效能上的提高。當迴圈體中的語句被執行的次數特別多時,這種改進的效果將愈發明顯。第一種寫法儘管是很多程式設計師一拍腦袋就能夠最先想到的,儘管它的書寫是簡單而明了的,但稍微一下這樣做又可能是不划算的。寫出第二種或者第三種情況的**並不算一件很難的事,但是有時候程式設計師就是缺乏這種意識,因此筆者再次提醒讀者,一定要注意迴圈,那裡很有可能是效能問題的所在!

AOP切面實現方法日誌列印耗時計算

很簡單,通過aop實現每個方法訪問時候統一進行日誌列印和耗時計算,在spring配置xml檔案中設定啟用aop aspect component public class loggingaspect args resultdata joinpoint.proceed args long endtim...

計算執行耗時

程式的版權和版本宣告部分 檔名稱 test.cpp 作 者 初瑞 完成日期 2013 年 11 月 12 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 計算執行時間 程式輸出 問題分析 略 演算法設計 略 1 include include using namespa...

關於for迴圈的耗時優化

1.for int i 0 i int size list.size for int i 0 i2.巢狀迴圈應該遵循 外小內大 的原則 3.for int i 0 i 10000000 i 應該改為如下避免a b重複計算 int c a b for int i 0 i 10000000 i 4.異常...