1
像動態指令調度一樣在CPU設計方面取得進展縮小了splat編譯器生成的代碼與優化編譯器之間的性能差距,也就是說編譯器今天能夠變得更加愚蠢嗎?由splat編譯器生成的代碼的相對性能
像動態指令調度一樣在CPU設計方面取得進展縮小了splat編譯器生成的代碼與優化編譯器之間的性能差距,也就是說編譯器今天能夠變得更加愚蠢嗎?由splat編譯器生成的代碼的相對性能
相反,優化編譯器可以在當代CPU上實現更多功能。自動矢量化使代碼加快幾倍。現代指令集還提供了一些優化機會(例如,在x86上使用CMOV代替條件分支)。
有一些地區,性能差距縮小。 CPU更快速地執行函數調用,因此函數內聯可能不像以前那樣有益。循環展開有時會使代碼變慢一點。但是在大多數情況下,編譯器優化和CPU優化是相互正交的。 CPU不能執行循環融合或通用子表達式消除。編譯器無法爲動態指令調度,分支預測或數據預取提供很好的選擇。