問題タブ [fastr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RStudio から直接 GraalVM / FastR を使用することは可能ですか?
いくつかのドキュメントを参照しましたが、デフォルトの GNU R 実装の代わりに RStudio で FastR / GraalVM を使用できるかどうかは明確ではありません。
私の目標は、RJava といくつかのラッパー関数を使用して Java コードを呼び出す現在のソリューションよりもはるかに使いやすい方法で R コードと Java コードを統合することです。
これは、GraalVM が宣伝している優れた機能の 1 つです。Java と R コードの統合 (両方向) については、ここで説明されています。
graalvm - ポリグロット関数を呼び出すとき、GraalVMは同じスレッドとヒープスペースを使用しますか?
GraalVM 内で Java から R コードを呼び出した場合 (GraalVM の polyglot 関数を使用)、R コードと Java コードは同じ Java スレッドで実行されますか (つまり、OS または Java スレッド間の切り替えはありませんか?)メモリ/ヒープ」スペース?つまり、以下のコード例 ( https://www.baeldung.com/java-r-integrationから取得)
呼び出しrBindings.getMember("c").execute(values)
により、値オブジェクト (int の配列) がコピーされますか? それとも、GraalVM はそれを同じメモリ空間へのポインタと見なすほどスマートなのでしょうか? コピーの場合、コピー時間は、通常の Java clone() 操作の場合と同じ (または類似、つまり 20% 以内) ですか? 最後に、ポリグロット関数 (この場合は R で実装された customMean) の呼び出しには、ネイティブ Java 関数の呼び出しと同じオーバーヘッドがありますか? おまけの質問: GraalVM JIT コンパイラは、レイヤー全体でコンパイルすることさえできますか?
GraalVM コンパイラは、通常の Java JIT コンパイラと同じくらいスマートで、上記のステートメント全体が 2 つのマップ操作なしで簡単に記述できることに気付くでしょうか (これらは互いに相殺されるため)。
参考までに: ここで特定した問題が解決されたら、GraalVM を使用して Java コードと R コードの両方を実行することを検討しています(オラクルの主張にもかかわらず、通常の R と比較して FASTR (つまり、R の GraalVM バージョン) が 10 倍 *遅い*のはなぜですか? 40 倍 *高速*? ) であり、動機の 1 つは、Java から R を呼び出す (RServe() を使用する) 時間がネットワーク IO に費やされる時間の 50% をなくすことです (Java は TCP/IP および RServe を介して RServer と通信するため)。およびJavaは異なるスレッドとメモリ空間などにあります)