DLR 的适应性编译器

  • Jonathan Allen
  • 赵劼

2009 年 10 月 7 日

话题:.NETRuby语言 & 开发架构

对于 Python 或 Ruby 等传统的脚本语言,动态语言运行时(DLR,Dynamic Language Runtime)在“热身”之后会有显著的性能提高。但对于仅仅执行一到两次的代码,编译表达式树所消耗的时间要远高于执行的开销。

为了解决这个问题,DLR 引入了适应性编译器(Adaptive Compiler)。一般情况下,DLR 会直接对表达式树进行解释执行,而不是对其进行编译。如果它发现这个表达式树需要反复使用,则会在后台线程中对其进行编译以备未来调用。据微软所言,这种做法让 IronPython 2.6 的启动性能有了显著提高。

由于这是 DLR 内部的技术,这个改进会体现在其上的任何动态语言中。

查看英文原文:The DLR’s Adaptive Compiler

.NETRuby语言 & 开发架构