我想知道你的代碼中有沒有使用的函數的開銷是多少。在未使用的代碼中的開銷
例如說你有一些調試日誌記錄,然後給你的大部分對象一個正在調試日誌中使用的ToString()函數。
在未使用調試日誌記錄的發行版本中。那麼值得去除這些ToString()函數的源代碼嗎? (例如,通過宏?)
或者他們只是使可執行文件略微大一點,否則不影響性能?例如沒有速度影響?或者編譯器或鏈接器可能甚至刪除不使用的功能?如果編譯器或鏈接器不刪除代碼,如果ToString()函數是內聯定義的呢?推測它會嘗試內聯代碼,並且由於函數從未被調用,它會消失?
我想每個函數都需要保留在一個靜態庫中,但是一旦編譯成可執行文件,肯定會有很多東西被鏈接器忽略?
在另一個大致相似的註釋中,如果編譯器選擇不內聯內聯函數,以便內聯函數在多個編譯單元中定義爲函數,鏈接器是否會將多餘的定義查找出來並僅鏈接他們在最後?
謝謝
它可能取決於編譯器以及它使用哪些優化。 – soandos 2011-05-26 11:12:49
「不成熟的優化是萬惡之源」 - Donald Knuth – 2011-05-26 11:19:42
我厭倦了過早優化的口頭禪。是的,謝謝你的幫助。另外:「瞭解你在做什麼可能會幫助你做好。」或者你不同意?對編譯器和鏈接器的理解肯定不錯。但感謝您的意見。 – Cookie 2011-05-26 11:26:16