2008-09-19 37 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

相关问题