優化程式效能

2021-06-25 18:52:17 字數 980 閱讀 3455

l 消除迴圈的低效率 n 

對於迴圈中的過程呼叫盡量移出迴圈外, 例如:

nfor

(i=0;i<strlen(s);i++) //strlen()

函式為線性增長

,在字串長度很大時

,很消耗系統資源

n 減少不必要的儲存器引用, 將儲存器引用儲存在臨時變數中.

l 處理器優化: 即充分利用儲存器流水線操作的吞吐量 n 

迴圈展開, 減少讀寫相關, 即所使用的資料必須等待上一次操作完成.

n 重新結合變換, 減少讀寫相關, eg

nfor

()

acc=

(acc op data[i])op data[i+1]

// acc = acc op (data[i] op data[ i + 1]    

相比上一行

, 處理器可以更新

acc的同時進行

(data[i] op data[i + 1]), 

而上一行就必須等待

acc更新完之後才能進行

(acc op data[i])操作.

l 利用區域性性原理: 快取記憶體 n 

時間區域性性: 被引用過一次的儲存器位置可能在不遠的時間內繼續被引用 n 

空間區域性性: 如果乙個儲存器位置被引用了, 很可能在不遠的將來被引用其附近的儲存器位置 n 

每一級快取只是關心其上下級快取的分組情況, 快取管理可能是硬體本身, 或者軟體, 亦或是二者的結合

優化程式效能

編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...

優化程式效能

研究彙編 是理解編譯器以及產生的 會如何執行的最有效的手段之一。編譯器優化 的限制 1 程式設計中存在 儲存器別名使用 的問題。編譯器必須假設不同的指標可能指向儲存器中相同的位置。2 函式呼叫 簡略了。具體看書 基本的編碼原則 效能大幅度提公升 優化程式效能的一些方法 1 將除錯完的程式完成編譯器級...

cpp程式效能優化

1.重中之重 演算法優化 程式效能優化最顯著的優化方法是演算法上的優化,演算法的優化對效能的提公升往往是乙個數量級的,例如排序,冒泡的時間複雜度為o n 2 而快速排序的時間複雜度為o nlog n 這種效能的提供是非常明顯的。2.消除冗餘的迴圈 我們先看一下for迴圈生成的彙編 for int n...