1つの機能を実行するC++プログラムがあります。大きなデータファイルを配列にロードし、整数の配列を受け取り、その配列でルックアップを実行して、単一の整数を返します。私は現在、次のように、引数として各整数を使用してプログラムを呼び出しています。
$ ./myprogram 1 2 3 4 5 6 7
私もrubyスクリプトを持っていますが、このスクリプトでc++プログラムを利用したいと思います。現在、私はこのようにやっています。
Rubyコード:
arguments = "1 2 3 4 5 6 7"
an_integer = %x{ ./myprogram #{arguemnts} }
puts "The program returned #{an_integer}" #=> The program returned 2283
これはすべて正常に機能していますが、私の問題は、rubyがこの呼び出しを行うたびに、c ++プログラムがデータファイル(100 MBを超える)をリロードする必要があることです。これは非常に遅く、非常に非効率的です。
C ++プログラムを書き直して、ファイルを1回だけロードし、毎回ファイルをリロードせずに、rubyスクリプトを介して多くのルックアップを実行できるようにするにはどうすればよいですか。ソケットを使用することは賢明なアプローチでしょうか?C ++プログラムをRuby拡張機能として作成しますか?
明らかに、私は経験豊富なc ++プログラマーではないので、あなたの助けに感謝します。