У меня есть программа на С ++, которая выполняет одну функцию.Он загружает большой массив данных в массив, получает массив целых чисел и выполняет поиск в этом массиве, возвращая одно целое число.В настоящее время я вызываю программу с каждым целым числом в качестве аргумента, например:
$ ./myprogram 1 2 3 4 5 6 7
У меня также есть сценарий ruby, и я хотел бы, чтобы этот сценарий использовал программу c ++.В настоящее время я делаю это следующим образом.
Ruby Code:
arguments = "1 2 3 4 5 6 7"
an_integer = %x{ ./myprogram #{arguemnts} }
puts "The program returned #{an_integer}" #=> The program returned 2283
Это все работает правильно, но моя проблема в том, что каждый раз, когда ruby делает этот вызов, программа на С ++ должнаперезагрузите файл данных (более 100 МБ) - очень медленно и очень неэффективно.
Как я могу переписать мою программу на c ++, загрузить файл только один раз, что позволяет мне делать много поисков через скрипт ruby, не перезагружая файл каждый раз.Будет ли разумно использовать сокеты?Написание программы на c ++ в качестве расширения для ruby?
Очевидно, я не опытный программист на c ++, поэтому спасибо за вашу помощь.