【发布时间】:2010-02-18 12:55:56
【问题描述】:
我有一个执行一个功能的 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++ 程序都必须重新加载数据文件(超过 100mb) - 非常慢,而且效率非常低。
如何重写我的 c++ 程序只加载文件一次,从而允许我通过 ruby 脚本进行多次查找,而无需每次都重新加载文件。使用套接字是一种明智的方法吗?将 c++ 程序编写为 ruby 扩展?
显然我不是一个有经验的 c++ 程序员,所以谢谢你的帮助。
【问题讨论】: