我在看代碼,別人寫了優化代碼,它有很多調試節,類型C++企圖通過更換測試
if(0) { code }
或if(1) { code }
或if(false) { code }
甚至有
#if(0)
#endif
(它沒有轉灰 - 但我認爲它應該)
我想知道,如果我用幾個#if 0
(或#ifdef _DEBUG
)替換這些,可以優化代碼嗎? - 或者 - 它不會有什麼區別?
我認爲這可能會有所幫助,因爲我已經看到這些部分中的代碼被灰顯 - 我認爲這段代碼已從發佈可執行文件中刪除...因此使其更快。真的嗎 ?
,我正在盤算的代碼是內部函數可以被稱爲很多次......
編輯:我指的是代碼正在運行數百萬次。我知道if(0)的內容將被忽略...
我也意識到通過將測試從0切換到1,能夠輕鬆調試問題的好處...
我的問題是,我添加了數百萬次的測試,如果(0)不會增加開銷的事實......我想弄清楚什麼是可以使這段代碼花費更少的時間。
譯文:如果我做這個改變,我將不會獲益? – Thalia
編譯錯誤! const' –
後的變量名或類型如果這些是if(0)if(false) - 則不是。也許在編譯時有一點加速,但不是在運行時。如果你的編譯器非常糟糕,或者你把所有的優化結果都拋棄了,你可能會在運行時加速。在所有其他情況下,如果(0)確實會在運行時存在。 – quetzalcoatl