嫌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的工作也正在進行中。


Advertisement

更多 iThome相關內容