对于 Python 或 Ruby 等传统的脚本语言,动态语言运行时(DLR,Dynamic Language Runtime)在“热身”之后会有显著的性能提高。但对于仅仅执行一到两次的代码,编译表达式树所消耗的时间要远高于执行的开销。
为了解决这个问题,DLR 引入了适应性编译器(Adaptive Compiler)。一般情况下,DLR 会直接对表达式树进行解释执行,而不是对其进行编译。如果它发现这个表达式树需要反复使用,则会在后台线程中对其进行编译以备未来调用。据微软所言,这种做法让 IronPython 2.6 的启动性能有了显著提高。
由于这是 DLR 内部的技术,这个改进会体现在其上的任何动态语言中。
查看英文原文: The DLR’s Adaptive Compiler
更多内容推荐
VB 在微软产品路线图中的尴尬位置
从一开始,微软就公开宣布Visual Basic和C#将在.NET平台中被同等对待。然而另外一方面,社区却不时指责微软对VB的支持力度不够。那么事实又在何方呢?
微软在动态语言支持上超越了 Java?
微软在宣布了动态语言运行时(Dynamic Language Runtime,DLR)之后,到处都开始沸沸扬扬起来,Java领域也不能幸免。有不少人看起来已经相信,DLR使得.NET平台在和JVM的大比拼中先胜一筹了,原因是DLR已经解决了许多Java才刚刚开始意识到的问题。现在让我们一起来审视一下对动态语言支持的现状,以及和DLR的对比。
F#创建者 Don Syme 谈 F#设计原则
在.Net Fringe 2016大会上,F#创建者Don Syme谈了他对F#现状的看法以及F#的二元性。F#是以一个为面向对象语言构建的运行时为基础构建的函数式语言。
课前必读 | 有关术语发音及环境要求
希望能帮助你更好地学习和实践本专栏的内容。
2019-11-25
可伸缩性:动态和静态程序设计语言
紧随着个人信息管理项目Chandler的消亡,在TSS上展开了一场关于动态语言可伸缩性潜力的讨论。Ted Neward试图跳出语言之争,就此问题提出一些结构性的见解。
实验:Hello World 程序开发
2019-11-13
Mono 4.0 发布,支持 C# 6
Mono 4.0本月正式发布。这标志着含有微软的CoreCLR项目的开放源代码的首个版本的问世。其默认的语言为C# 6,这意味着Mono再一次抢在微软之前推出了新的C#编译器的RTM版本。
使用 C#进行系统编程
虽然对于系统编程的定义很模糊,不过可以将其描述为在比特、字节、指令,或CPU周期层面所进行的思考。系统编程这个概念也暗含了对性能和可靠性的需求。Microsoft技术总监Joe Duffy在QCon New York活动中介绍了使用C#进行系统编程的战略,同时他还谈到了这其中的一些陷阱以及缓解方法。
性能是.NET Core 的一个关键特性
.NET Core核心带来了许多性能方面的优化,无论是在执行速度方面还是内存分配方面。示例是集合和LINQ扩展方法、文本处理、网络的优化,还有一些新的类型和概念,比如可以用Span做些有趣的事情。在本文中,我们将讨论如何使用这些新概念。
C#的未来:托管指针
对于许多开发者,尤其是编写游戏软件,以及进行纯数字计算的开发者来说,原始性能是程序的重中之重。在C#中获得高性能的一种方式是避免内存的分配,并且不要对结构体的内容进行复制。下面的一条提议能够让C#利用CLR中的托管指针概念实现这一点。
你可能错过的东西:.NET 3.5 SP1 中的 JIT 增强
.NET 3.5最近发布的Service Pack包括了一些新的性能增强。这里,我们来研究一下方法内联和JIT编译器。
拥抱 Service Mesh:传统微服务框架的技术演进之路
2018-12-26
MacRuby 0.5 将引入基于 LLVM 的 VM,性能提升明显
在一个试验性分支上,MacRuby下个版本的首个性能方面的改进已经完成。该版本引入了一个基于LLVM的全新VM,较之MacRuby早起的版本已经有了非常显著的速度提升。
81 丨多线程编程新思路:GCD 概览
2019-11-05
Rubinius 内部细节:线程、对象空间和调试
我们继续进行对Rubinius创始人Evan Phoenix的采访,并且讨论Rubinius的内部细节,包含虚拟机内部如何使用字节码实现快速调试,以及ObjectSpace和线程方面实现的问题。
ASP.NET vNext 允许你自定义项目加载器以及对多种语言的支持
ASP.NET vNext运行时会在实际运行C#源代码之前使用Rosylyn编译器对代码进行编译并加载。David Fowler则为大家演示了如何使用KRuntime加载程序的依赖注入功能,将你自己的代码注入运行时。
6 种 WebAssembly 的优化手段
优秀的优化可将 Wasm 二进制文件大小缩小十倍有余
Rust 异步编程之 smol 运行时(五)
2021-07-22
Java 即时编译器原理解析及实践
本文会先解析一下即时编译器的原理,然后再分享一些在美团实践的经验,希望能对大家有所帮助或者启发。
IntelliJ 调试程序初探
2019-06-03
评论