1.迴圈的判斷語句約占用了執行時間的17%。
2.編譯器會對程式進行一定程度的優化,如:
(1)
a += b1; a += b2; …… a += bn;
編譯器會合併為
a += n*b;
(2)
a = 3; a = 3;……a = 3;
編譯器會去除無作用的單一重複語句。
3.常量賦值、運算比變數快。
4.不存在依賴關係的語句,cpu可並行處理,如:
依賴關係:a += b; c += a;
無依賴關係:a += b; c += b;
tips: 盡量避免等待前一操作的執行結果。
在統計數值時,避免單個變數進行統計,應分成若干個變數進行統計後合併。
5.運算物件的變數越多,處理時間反而越短,因為cpu可以並行處理,當變數個數與cpu運算器個數相同時最快。
6.乘法運算時間是加法的3倍:0.9 : 0.3(納秒),除法運算最慢:7.3納秒。
7.無符號除法運算(unsigned)比帶符號的要快得多。
8.if...else... 條件成立比不成立的執行時間短。
9.32位環境下函式呼叫:無引數比有引數快10%;64位環境由於有較多暫存器,時間差別不大。
C 程式效能優化
一段c程式,功能開發完成,開始效能優化。當然是先用 pg 編譯,再gprof看 熱點 在 很快找到,是計算hash值的函式,於是換了個更快的hash函式 fnv 速度提高了一些。接著把該hash函式內聯 inline 程式又快了一些。內聯函式不是解決效能問題的靈丹妙藥,因為inline之後gprof...
優化程式效能
編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...
優化程式效能
l 消除迴圈的低效率 n 對於迴圈中的過程呼叫盡量移出迴圈外,例如 nfor i 0 i strlen s i strlen 函式為線性增長 在字串長度很大時 很消耗系統資源 n 減少不必要的儲存器引用,將儲存器引用儲存在臨時變數中.l 處理器優化 即充分利用儲存器流水線操作的吞吐量 n 迴圈展開,...