多くのデータに依存する尤度関数の値を計算する C++ で書かれたプログラムがあります。R から関数を呼び出して関数値を要求できるようにしたいと考えています (R では計算に時間がかかり、C++ プログラムは既にそれを変更するには長すぎます。約 150K 行のコードです)。
これを実行して 1 つの値を要求することはできますが、その後 C++ アプリケーションが終了し、再起動してすべてのデータを再度ロードする必要があります (これは で行いました.c()
)。尤度関数とデータのモデルにもよりますが、読み込みには 10 ~ 30 秒かかります。C++ アプリケーションを存続させ、関数値の要求を待機する方法があるかどうかを考えていたので、すべてのデータをメモリに読み込みます。C++ アプリケーションで既に 1 つの関数値を計算するのに約 0.5 秒かかりますが、これは C++ では非常に長い時間です。
を使用してこれを行うことを考えてpipe()
いましたが、それが実行可能なオプションであるかどうか、または他の方法を使用する必要があるかどうかを尋ねますか? rcppでこれを行うことは可能ですか?
この関数で R の最小化アルゴリズムをテストするためにこれを行っています。