2008-09-19 66 views

回答

19

這是在編譯程序集時設置的。有兩種類型的優化:

  • IL優化
  • JIT本機代碼的質量。

默認設置爲這個

/optimize- /debug- 

這意味着未優化IL,和優化的本機代碼。

/optimize /debug(+/full/pdbonly) 

這意味着未優化的IL和未優化的本機代碼(最佳調試設置)。

最後,爲了獲得最快的性能:

/optimize+ /debug(-/+/full/pdbonly) 

這將產生優化的IL和優化的本地代碼。

當生成未優化的IL時,編譯器將在整個代碼中插入NOP指令。這使代碼更容易調試,允許在控制流程指令上設置斷點,例如for,while,else,try,catch等。

CLR在優化代碼方面做得非常好,無論如何。一旦某個方法被JIT化,一個call或callvirt指令上的指針直接指向本地代碼。

此外,CLR將利用可用的任何架構技巧來獲得您的代碼。這意味着通過JIT運行的程序集運行速度比使用Ngen預編譯的程序集運行速度快(儘管啓動時間稍微慢一點),因爲NGen將針對所有平臺進行編譯,而不會利用任何技巧。

+3

+1不錯。您在IDE中確切地設置了這些值? – Trap 2010-02-12 16:53:15

相關問題