FastR:R的直接替代品,讓R的速度分起來!
R語言是一種利基語言,除了研究學者和數據科學家,大部分的開發者對於這種動態語言都持欣賞的態度。當然,對於一個1993年首次開發的編程語言來說,R語言用戶通過三百多萬其實也沒有太了不起。
沒錯兒,R的年齡確實不算太小,但是由於缺乏JIT,所以R通常會很慢。R也是內存佔用者,這是因為它有較大的對象,大量分配,並且有一個不移動的垃圾收集器。此外,R具有複雜的語義,這使得本科生和研究生很難在數據科學實驗室中學習它。
作為一個"必須維護的遺留軟體",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。
TAG:IT168企業級 |