迴圈展開
提高並行性
一些限制因素
理解記憶體效能
應用:效能提高技術
確認和消除效能瓶頸
當字串越長lower1與lower2的效率差距越大:
不要過分關心可**的分支
錯誤的分支**影響可能會非常大,但是現代處理器中的分支**邏輯非常善於辨別不同的分支指令的有規律的模式和長期的趨勢。
書寫適合用條件傳送實現的**
分支**只對有規律的模式可行。對於依賴於資料的任意特性的**是不可行的,比如說判斷乙個數是正數還是負數。
對於這種情況如果編譯器能夠產生使用條件資料傳送而不是使用條件控制轉移的**,將會極大地提高程式效能。
如對於兩個整數陣列a,b將陣列a[i]設定為a[i]和b[i]中較小的那乙個,而將b[i]設定為兩者中較大的那乙個。
條件控制轉移的**:
條件資料傳送的**:
高階設計。為遇到的問題選擇適當的演算法和資料結構
基本編碼原則。避免限制優化的因素
低階優化。結構化**以利用硬體功能。
程式效能優化 深入理解計算機系統
對暫存器的訪問的優化 暫存器訪問優化的核心是盡量避免打斷流水線 a.指令之間資料依賴的時候 如存在對同乙個暫存器的讀寫依賴 b.指令之間存在控制依賴的時候 如條件轉移 注意的是,並不是只有兩條相鄰的指令才會存在依賴 只要是同時出現在流水線中任意兩條指令都可能出現依賴 以f fetch d decod...
優化程式效能 《深入理解計算機系統》
1 高階設計 適當的演算法和資料結構 2 基本編碼原則 使編譯器產生高效的 理解 編譯器 的能力和侷限性,消除不必要的內容 消除連續的函式呼叫 消除不必要的儲存器引用,要考慮是否為 同一位址 以上兩點,也是妨礙編譯器優化的主要因素,編譯器很難判斷以進行優化。3 低階優化 將乙個任務分成多個部分,利用...
深入理解計算機系統 優化程式效能(1)
1 優化編譯器的能力和侷限性 1 編譯器有自己能夠優化程式的能力,但會有侷限性。指標指向記憶體的同一位置 例如 void twiddle1 long xp,long yp void twiddle2 long xp,long yp 函式twiddle1需要6次記憶體引用 2次讀 xp,2次讀 yp,...