2011-04-13 121 views
3

我正在使用編譯時使用gcc -O3 -g的軟件包。用-g編譯會導致代碼變慢嗎?

由於對該代碼的一些函數調用是我的程序中最慢的部分,所以我想知道-g是否可能是罪魁禍首?還是應該在運行時方面無關緊要?

+3

那麼,你試過拿出'-g'標誌,並重新測量性能? – 2011-04-13 22:40:55

+0

@Oli:如果答案是「否,那麼自-O3打開以來就沒有辦法可以處理了」,那麼我就不會費心測試了。但鑑於答案有點模糊,我想我會做測試。 – Frank 2011-04-13 22:48:20

+0

好的,即使這些功能被稱爲1億次,確實沒有什麼區別。 – Frank 2011-04-13 23:03:02

回答

2

由於-O3意味着積極的內聯,並且-g意味着避免內聯,因此調試器可以有函數地址,但這些選項有些不一致。儘管如此,一般來說-O3會贏,除了一個更大的二進制數 - 以及可能來自分頁或非地址的次要速度效應 - 它應該沒有太大區別。

2

-g會使您的代碼更大(增加調試符號的空間),並禁用內聯等一些優化,但可能不會明顯變慢。

相關問題