2011-09-15 11 views
4

JavaからR関数を呼び出すためにRCaller 2.0を試してみましたが、何度か試してみるとうまくいきました。統合はかなり簡単でしたが、RCallerは実行時にある程度遅いです。私は繰り返し同じスクリプトを何千回も呼び出す必要があり、このライブラリによって導入された遅延が私のニーズに受け入れられないので、RCaller 2.0が私のアプリケーションには適していないことに恐れています。JavaからのRの呼び出し - RCallerへのより速い代替

JavaからRスクリプトを呼び出すためのより高速な(実行時実行時間に関して)代替手段がありますか?

+0

あなたはrJavaを認識していると思います。適切でない理由は何ですか? –

+0

私は決してJava/Rを統合していませんし、RCaller 2.0は最も簡単な解決策でした。私はrJavaとRserveについても聞きましたが、どれをお勧めしますか?レンジについても作業が進んでいますが、早すぎるかもしれません。 – Gevorg

答えて

1

反復の一部をRにプッシュする方法はないので、あまり頻繁に呼び出さないようにしていますか?たぶん、実行するスクリプトの配列で、データの配列を渡すことができます。ここでは、それらを1つずつ渡しています。

+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

0

Renjinを試してみると、少なくともかなり速いようです。

2

Rcallerには、バージョン2.1に加えて多くのパフォーマンスが改善されています。これは、単一のRプロセスを使用してループ内のコマンドをRに渡すことをサポートしています。つまり、初期化プロセスの後にシステムコールはなくなります。

+0

この[リンク](http://stdioe.blogspot.com/2011/09/rcaller-support-for-sequential-commands.html)は、より迅速な解決に役立ちます – jbytecode

関連する問題