Какой самый быстрый способ передачи данных между C ++ и Java

У меня есть программа на C ++ и программа на Java. На стороне C ++ у меня есть вектор, содержащий миллионы записей. Мне нужно перенести эти данные в мою программу Java. До сих пор я пробовал следующее:

  • Создал сокет unix, преобразовал вектор в длинную строку (Serialized) и отправил его через сокет unix

  • Создана модель экономичного сервера / клиента для передачи данных.

Оба подхода работали очень хорошо, но производительность, которую я получаю, довольно низкая. Я даже не вижу, используя полную пропускную способность сети (в случае экономии).

Также с подходом сокетов Unix, так как я сериализую его в String, а затем снова преобразую эту строку обратно в массив строк (полученный byte [] в String и split) на стороне Java, это очень дорогая операция.

Каков наилучший способ более быстрой передачи данных из мира C ++ в мир Java с меньшими затратами на реконструкцию / сериализацию объекта?

0

Решение

Если обе проблемы находятся на одной машине, я бы использовал отображенный файл общей памяти.

Таким образом, обе программы могут обращаться к данным на полной скорости памяти без сериализации / десериализации, особенно если значения int, long или double.

Вы можете поместить файл на диск tmpfs или ram, чтобы избежать попадания на жесткий диск.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]