Optimizing R language execution via aggressive speculation

Optimizing R language execution via aggressive speculation
复制标题

通过积极推测优化 R 语言执行

DOI:
10.1145/2989225.2989236
复制
发表时间:
2016
期刊:
Proceedings of the 12th Symposium on Dynamic Languages
影响因子:
--
通讯作者:
Mick J. Jordan
Mick J. Jordan
中科院分区:
--
文献类型:
--
作者:
Lukas Stadler;Adam Welc;Christian Humer;Mick J. Jordan

文献摘要

被引文献

相似文献

R语言,从语言设计和实现的角度来看,是各种编程语言概念的独特组合。它具有函数特性,比如参数的惰性求值,但也允许表达式具有任意的副作用。许多运行时数据结构,例如变量作用域和函数,都是可访问的,并且可以在程序执行时进行修改。几种不同的对象模型支持结构化编程,但是对象模型可以以出人意料的方式相互影响彼此的基本操作R R在实践中运行良好,但它是复杂的,它是一个挑战对于语言开发人员试图改进当前最先进的,这是参考实现——GNU R .这项工作的目标是证明,给出正确的方法和适当的工具,创建一个R语言的实现是可能的,它提供了更好的性能,同时保持了与原始实现的兼容性。在本文中,我们描述了由积极的推测技术支持的新型优化,并在FastR中实现,FastR是一种替代R语言实现,利用了Truffle——一种由Oracle实验室开发的基于jvm的语言开发框架。我们还提供了实验证据,证明了这些优化与GNU R以及R语言的Renjin和TERR实现相比的有效性。
The R language, from the point of view of language design and implementation, is a unique combination of various programming language concepts. It has functional characteristics like lazy evaluation of arguments, but also allows expressions to have arbitrary side effects. Many runtime data structures, for example variable scopes and functions, are accessible and can be modified while a program executes. Several different object models allow for structured programming, but the object models can interact in surprising ways with each other and with the base operations of R. R works well in practice, but it is complex, and it is a challenge for language developers trying to improve on the current state-of-the-art, which is the reference implementation -- GNU R. The goal of this work is to demonstrate that, given the right approach and the right set of tools, it is possible to create an implementation of the R language that provides significantly better performance while keeping compatibility with the original implementation. In this paper we describe novel optimizations backed up by aggressive speculation techniques and implemented within FastR, an alternative R language implementation, utilizing Truffle -- a JVM-based language development framework developed at Oracle Labs. We also provide experimental evidence demonstrating effectiveness of these optimizations in comparison with GNU R, as well as Renjin and TERR implementations of the R language.