新的.NET 编译器——RyuJIT 项目

  • Jeff Martin
  • 孙镜涛

2013 年 10 月 10 日

话题:.NET语言 & 开发

Microsoft 正在开发一个新的即时(Just-In-Time,JIT)编译器,该编译器最终会被用于运行.NET 应用程序。新编译器的代号为“RyuJIT”,它标志着设计哲理的变化。现在的 64 位 JIT 编译器是为了支持在服务器环境中发现的操作配置文件而设计的,这种情况下的执行性能要优于启动性能。为了获得额外的性能提升它还依赖了像 NGen 和后台 JIT 这样的支持技术。但是 RyuJIT 的设计目标考虑了 64 位代码在服务器之外的计算平台上的流行程度。因此,与现在的 x64 JIT 相比,RyuJIT 强调整体的性能提升,包括缩短了应用程序启动时间。

Microsoft 从事RyuJIT 项目的一位程序经理 Andrew Pardoe 注意到,一直到现在为止.NET CodeGEN 团队一直在管理两个独立的代码库,一个针对 X64 .NET JIT 编译器,一个针对 X86 .NET JIT 编译器。RyuJIT 是基于目前 X86 .NET JIT 编译器代码库的。它的最终目标是让 RyuJIT 项目成为现在以及将来所有架构(X86、 X64、ARM 等)上的.NET JIT 编译器。现在的 RyuJIT 仅支持 X64 架构,同时还有一个针对 64 位 Windows 8.1 和 Windows Server 2012 R2 的社区技术预览版(CTP)。

安装了 CTP 之后你将能够根据自己的需要体验新的编译器,它并不会替代现在正在使用的 X64 JIT 编译器。如果想要使用 RyuJIT 有两种方式可以选择,或者使用下面的环境变量:COMPLUS_AltJit=*;或者创建一个新的值为 * 的字符串注册表键 HKEY_Local_Machine\SOFTWARE\Microsoft\.NETFramework\AltJit 。注意,RyuJIT 现在并不支持编辑并继续(Edit & Continue),但是将来的版本将会支持该功能。Microsoft 的 Kevin Frei 声明说,虽然现在的 RyuJIT 仅支持 Windows 8.1 和 Server 2012 R2,但是最终版本的 RyuJIT 将会是完整.NET 运行时的一部分,在.NET 支持的所有平台上都将获得完整的支持。

查看英文原文Enter the Dragon: RyuJIT Project Yields New Compiler for NET

.NET语言 & 开发