Linux
使用 -O3 優化編譯 GNU/Linux
據說用
-O3
gcc 優化選項編譯 GNU 工具和 Linux 核心會產生奇怪和時髦的錯誤。這是真的嗎?有沒有人嘗試過,或者它只是一個騙局?
它在Gentoo中使用過,我沒有發現任何異常。
-O3
有幾個缺點:
- 首先,它產生的程式碼通常比
-O2
or慢-Os
。有時它會由於循環展開而產生更長的程式碼,實際上可能由於程式碼的記憶體性能較差而變慢。- 據說它有時會產生錯誤的程式碼。這可能是由於優化錯誤或程式碼錯誤(如忽略嚴格別名)。由於核心程式碼有時是並且有時必須是“智能的”,我會說一些核心開發人員可能會犯一些錯誤。當我使用 gcc 4.5 編譯核心時,我遇到了各種奇怪的問題,比如使用者空間實用程序崩潰,當時它是穩定的。由於各種錯誤,我仍然將 gcc 4.4 用於核心和幾個選定的使用者空間實用程序。同樣可以申請
-O3
。- 我認為它不會為 Linux 核心帶來太多好處。核心不進行繁重的計算,並且在某些地方,它通過彙編進行了優化。
-O3
flag不會改變上下文切換的成本或 I/O 的速度。我不認為像整體性能的 <0.1% 加速是值得的。