icc編譯器提供生成優化報告功能。優化報告包含了編譯過程中對各部分**的優化資訊,用以幫助診斷效能問題與效能調優。在此記錄兩個作業系統(windows & linux)上icc編譯器生成優化報告的設定步驟。
windows上可以將icc編譯器整合到vs中,在安裝icc時,會對相容vs版本進行提示。
icc手冊設定說明
vs屬性頁面設定如下:
這裡對icc優化報告的選項引數進行簡單說明。
optimization diagnostic file:生成報告檔案。注意,windows作業系統上生成的報告字尾是 .rep。
optimization diagnostic level:報告詳細程度。icc手冊說明如下。
optimization diagnostic phase:報告期項(優化型別)。
linux上編譯時通過cmake實現的。
cmakelists.txt中新增編譯選項
add_definitions(-qopt-report5)
linux編譯生成的優化報告檔案字尾為 .optrpt
編譯器優化
常量摺疊 a 1 2 由於結果可預見,編譯器直接生成a 3 常量傳播a 1 若後續 沒有更改a,則編譯器將a直接用其值1代替 減少變數 對於x和y的比較,可以轉換成if i j x i2 y j 2 if x y 複寫傳播 類似於常量長傳,不過傳播的是變數 若後續 未修改a的值,則編譯器用m代替a ...
編譯器優化 乘法優化
由這個想到的 31乘以某個數能不能寫成這個數乘以2的次冪 再減去這個數。用數學語言表達一下就是 設這個數為x 31 x x 2 n x 這個等式是否存在,如果存在,求n的值 那我們計算一下,31 2 n 1 得2 n 32 得n 5 也就是說存在那麼乙個n使得,31乘以某個數的結果等於這個數乘以2的...
編譯器優化問題
今天遇一程式,unsigned char a,b,c a 0x89 b a 1 c a b 在單步除錯的時候,觀察數值發現b的值為0,分析b的值應當為0x44,百思不得其解,通過檢視其彙編語句,發現問題所在。彙編語句如下 mov r7,tmod 0x89 mov a,r7 clr c rrc a a...