分支優化對效能有重大影響。
瞭解分支流程並改善分支的可預測性,可以明顯提高程式碼的速度。
有助於分支預測的基本優化型別有:
讓程式碼與數據處在單獨的頁上(這點非常重要,如需有關詳細資訊,請參閱記憶體訪問主題)。
消除分支。
調整程式碼結構,使之符合靜態分支預測演算法的要求。
如果無法調整程式碼結構,請在適當的地方使用分支方向提示。
在自旋等待循環中使用 pause 指令。
將函式內嵌,並將呼叫與返回配對。
根據需要展開循環,使重複執行的循環的迭代次數為十六次或更少,除非這會大幅增加程式碼篇幅。
儘可能隔開分支,使它們的發生頻率不超過每 3 個微操作一次。
按照靜態分支預測假設(向後執行與向前不執行)調整程式碼結構,改善分支可預測性並優化指令預取效果。
避免混合使用遠、近呼叫與返回。
避免通過壓入返回地址並跳轉到目標來實現呼叫。硬體可以將呼叫與返回指令配對,從而改善可預測性。
在自旋等待循環中使用 "pause" 指令。
根據編碼建議內嵌函式。
避免間接呼叫。
如需有關詳細資訊,請參閱最新的優化手冊。