Is there any way to change the .NET JIT compiler to favor performance over compile time?我想知道是否有办法通过指定更深入的优化的首选项来更改.NET JIT编译器的行为。 失败的话,如果它还可以进行某种配置文件引导的优化,那将是很好的。 在编译程序集时设置。有两种类型的优化:
默认设置是这个
这意味着未优化的IL和优化的本机代码。
这意味着未优化的IL和未优化的本机代码(最佳调试设置)。 最后,要获得最快的性能:
这将产生优化的IL和优化的本机代码。 生成未优化的IL时,编译器将在代码中插入NOP指令。通过允许在控制流指令上设置断点,例如for,if,else,try,catch等,这使得代码更易于调试。 无论如何,CLR在优化代码方面都表现出色。一旦对方法进行JIT处理,调用或callvirt指令上的指针将直接指向本机代码。 另外,CLT将在JIT代码时利用任何可用的体系结构技巧。这意味着通过JIT运行的程序集将比使用Ngen预编译的程序集运行速度更快(尽管启动时间稍慢),因为NGen可以针对所有平台进行编译,并且不会利用任何技巧。 |