CLR 语言优化。语言编译器 VS JIT 编译器

Posted

技术标签:

【中文标题】CLR 语言优化。语言编译器 VS JIT 编译器【英文标题】:CLR Language optimization. Language Compiler VS JIT Compiler 【发布时间】:2011-01-10 08:31:01 【问题描述】:

Release IS NOT Debug: 64bit Optimizations and C# Method Inlining in Release Build Call Stacks

Scott Haselman 说“托管代码中的大多数优化都是由 JIT 编译器而不是语言编译器完成的。” 在上一篇文章中。

我认为,“JIT 编译时间”看起来像“运行时间”,因此 JIT 编译时间优化会使程序变慢。但他说情况正好相反。你知道为什么 CLR 优化会这样工作吗?

【问题讨论】:

我真的不明白问题是什么。您是否在问是否使用 NGEN 之类的东西提前编译为本机图像,从而绕过 JITer 实际上会使您的应用程序运行速度变慢?或者您是在问 JITer 的工作(优化)是否真的让程序运行更慢? 【参考方案1】:

是的,它更慢,也更快。 CLR 函数的初始运行将比本机例程慢,因为 JIT 编译器将函数编译为机器代码需要时间。然而,在随后的运行中,代码实际上可能更快,因为 JIT 编译器比 AOT(提前)编译器更了解应用程序。

例如,JIT 编译器可以在支持的处理器上启用 SSE 扩展。

【讨论】:

以上是关于CLR 语言优化。语言编译器 VS JIT 编译器的主要内容,如果未能解决你的问题,请参考以下文章

公共语言运行库(CLR)和中间语言(IL)

C#编译过程

java语言实现跨平台机制的原因

CLR加载程序集代码时,JIT编译器对性能的产生的影响

CLR(Common Language Runtime) 公共语言运行库

JVM -- 运行期优化;JIT