2014-02-17 31 views
-1

我正在計劃對C#編寫的.NET系統的繼承用法有所瞭解。我想分析中間語言代碼而不是C#代碼,以便也可以查看編譯代碼。有沒有關於優化代碼標誌被啓用時C#編譯器可以執行哪些優化的信息?我正在分析與繼承圖有關的調用行爲(例如使用多態,從基類重用方法等)。C#編譯器 - 在優化代碼標誌打開的情況下執行了哪些優化?

在互聯網上的大多數問題和資源都說'小優化'和其他模糊的東西。我需要特別瞭解編譯發佈模式時可能發生的語義變化。我對代碼的性能不感興趣。

例如,Scott Hanselman在his blog中發佈了方法內聯將在發佈模式下發生。但這只是一個例子。這意味着What is /optimize C# compiler key intended for?不會回答我的問題。

+0

可能有助於闡述爲什麼你對此感興趣,例如,你是否關心性能? –

+3

這有幫助嗎? http://stackoverflow.com/questions/969183/what-is-optimize-c-sharp-compiler-key-intended-for – BIDeveloper

+0

@Jim,是的,謝謝你,我知道那一個。但我想知道是否有更詳細的來源。 – Bas

回答

1

http://blogs.msdn.com/b/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx

埃裏克利珀(在C#編譯器團隊一位前校長開發商)回答了這個在他的博客。幾個言論:

  • 消除死代碼(這是從來沒有達到過的分支,支票總是返回true,...)
  • nullcheck優化。
  • 刪除間歇性呼叫(A(B(C(D)))被改寫爲A(D));
  • 雙回電話。

整個博客有更多的例子,如果你想知道這個,我建議你閱讀它。