技术开发 频道

FastR:R的直接替代品,让速度飞起来!

  【IT168 评论】R语言是一种利基语言,除了研究学者和数据科学家,大部分的开发者对于这种动态语言都持欣赏的态度。当然,对于一个1993年首次开发的编程语言来说,R语言用户通过三百多万其实也没有太了不起。

  没错儿,R的年龄确实不算太小,但是由于缺乏JIT,所以R通常会很慢。R也是内存占用者,这是因为它有较大的对象,大量分配,并且有一个不移动的垃圾收集器。此外,R具有复杂的语义,这使得本科生和研究生很难在数据科学实验室中学习它。

  作为一个"必须维护的遗留软件",R还必须发展以迎接新的挑战。

FastR:R的直接替代品,让速度飞起来!
FastR

  那么,R语言应该如何发展呢?

  其中一种方法是通过FastR项目,重新考虑如何实现R。这个虚拟机利用了测试技术,在Truffle的基础上在Java中实现了R。FastR高效、兼容、支持多种语言。

  R既不是最快也不是最高效的编程语言。FastR通过对Truffle框架提供的动态优化特性的广泛使用,提高了原有性能,消除由R语言引入的抽象,允许Graal编译器在运行中创建优化的机器码。

  Truffle框架还允许FastR解决语言不兼容问题。R功能强大且灵活,但常常与其他语言(如Java、Fortran和C/ c++)的接口创建产生显著的开销。这是由不同语言使用的不同执行策略造成的,例如,编译与解释,以及不兼容的内部数据表示。

  我们如何解决这种基本的不匹配呢?Truffle框架将必要的多种语言直接构建到运行时。因此,FastR使用这种基础结构,可以支持多种语言透明、无缝地交互。无论语言边界如何,多语言应用程序的所有部分都可以由同一个编译器编译,也可以同时执行和调试。

  另外,添加JIT编译器只能帮助解决速度问题。

  如何使用FastR

  FastR目前有两种形式:

  预先构建的二进制文件,其有Ruby和JavaScript的Truffle实现,可用于Linux和Mac OS x。不幸的是,目前还没有Windows版本。

  GitHub上的源代码版本。此选项不包含Ruby或JavaScript。

  FastR的最终目标是成为R的直接替代品,不过现在还在进行中,如果想要了解更多FastR的信息,或者想要做一些贡献的朋友,可以查看下面的链接:https://github.com/oracle/fastr。

0
相关文章