2011-09-15 24 views
4

我試過RCaller 2.0從Java調用R函數,我設法使它在幾次嘗試後工作。整合非常簡單,但RCaller在運行時相當緩慢。恐怕RCaller 2.0將不適合我的應用程序,因爲我必須重複調用相同的腳本數千次,並且此庫引入的延遲是我的需求無法接受的。從Java調用R - 更快的替代RCaller

從Java調用R腳本有更快的速度(在運行時執行時間方面)嗎?

+0

我假設你知道rJava。任何不合適的理由? –

+0

我從未將Java/R集成到一起,RCaller 2.0似乎是最簡單的解決方案。我聽說過rJava和Rserve,你會推薦哪一個?還有一些關於仁津的工作正在進行中,但它可能爲時尚早。 – Gevorg

回答

1

有什麼辦法可以將一些迭代推入到R中,這樣你就可以更少地調用它了?也許你可以傳入一組數據,並且有一系列腳本可以運行,現在你可以一個接一個地傳遞它們。

+0

考慮到每次通話的成本通常遠高於一次通話數據。 – obfuscation

+0

@Ed:對,但我沒有完全控制R腳本(我對R一無所知),所以這對我來說可能是個問題。此外,如果給定輸入出現任何錯誤,我將失去對異常處理的完全控制...... – Gevorg

+1

@Ed:好吧..這實際上是我最終的實現,它極大地提高了總執行時間。 RCaller在運行時不會擊敗rJava和rServe,但其簡單性在這次扮演了重要角色。 Rnjine可能即將推出:http://stdioe.blogspot.com/2011/09/embedding-r-in-java-applications-using.html; – Gevorg

2

Rcaller在版本2.1中有很多性能改進。它現在支持使用單個R進程在循環中傳遞命令給R。也就是說,初始化過程之後不再有系統調用。

+0

這[鏈接](http://stdioe.blogspot.com/2011/09/rcaller-support-for-sequential-commands.html)將有助於更快的解決方案 – jbytecode