甲骨文释出基于GraalVM的FastR框架,目标是取代GNU-R

嫌R语言的执行速度太慢吗?现在除了以C、C ++或Fortran重新实作R程式之外还有另一个选择,Oracle实验室推出了基于多语言通用虚拟机器GraalVM的R语言实作FastR,能够大幅提升R程式的效能,也可将R执行引擎嵌入到Java应用程序中,也因为受惠于GraalVM,因此获得与其他语言互通的能力。
R语言是一种用于统计计算的程式语言,常用于统计、资料探勘、分析以及资料视觉化,而基于GraalVM的R语言实现的FastR与GNU-R相容,其目标是要成为R语言参照实作GNU-R的替代品。
Oracle实验室GraalVM的FastR Runtime技术负责人Stepan Sindelar提到,R语言的效能一直是社群关注的重点,许多开发人员都需要用C、C ++或Fortran重新实作应用程序,以获得更好的执行效能。
官方以FastR重新实作了以R撰写,以光线追踪技术绘制华盛顿纪念碑的程式码,作者Tyler Morgan-Wall提到,虽然R能够实现算法与场景,但是效能低落的除了小资料集之外毫无用处。而以FastR重新改写之后的应用程序效能是原本GNU-R的3倍,而且应用程序在5次预热后效能更好。
虽然3倍的效能提升看起来结果已经很好了,在开发团队解决Fortran函数简单包装器所产生的瓶颈,以R语言重写Fortran算法,则在FastR加上GraalVM EE的环境下,效能为GNU-R的36.93倍。官方提到,FastR的长期目标之一是透过GraalVM LLVM来执行原生程式码,这不仅能消除R和Fortran程式码间的最佳化障碍,还能提供额外安全保障以及完全沙盒化的R套件执行能力。
且因为受惠于GraalVM,FastR还支援多语言程式开发,官方表示,在GraalVM之下,不再有Python或是R,哪一个才是比较好的资料科学语言的问题,尽管以Python重写R的函式,目前执行起来仍然需要负担些微间接成本,但是FastR加上Python的应用程序,仍然比单纯GNU-R的实作速度快上一个量级。
另一个R和GraalVM的使用案例,便是将R嵌入到Java应用程序中,过去R与Java的互通方式,是使用rJava套件,而FastR内建rJava API实作,速度比rJava快上许多,FastR和原生Java的互通性很好,程式语法就像是rJava,但是效能却比GNU-R和rJava更快。
目前为止,FastR都能良好使用为GNU-R建置的二进制R套件,并且使用这些R扩充套件的C API。FastR适用许多热门的R套件,包括ggplot2、jsonlite、testthat、assertthat、knitr以及Shiny等,FastR透过网格套件和基于网格的套件,像是lattice和ggplot2来支援R图形,官方同时也正努力支援基础图形套件,而支援dplyr和data.table的工作也正在进行中。
