对于 Python 或 Ruby 等传统的脚本语言,动态语言运行时(DLR,Dynamic Language Runtime)在“热身”之后会有显著的性能提高。但对于仅仅执行一到两次的代码,编译表达式树所消耗的时间要远高于执行的开销。
为了解决这个问题,DLR 引入了适应性编译器(Adaptive Compiler)。一般情况下,DLR 会直接对表达式树进行解释执行,而不是对其进行编译。如果它发现这个表达式树需要反复使用,则会在后台线程中对其进行编译以备未来调用。据微软所言,这种做法让 IronPython 2.6 的启动性能有了显著提高。
由于这是 DLR 内部的技术,这个改进会体现在其上的任何动态语言中。
查看英文原文: The DLR’s Adaptive Compiler




