Быстрый перенос данных C ++ в Java - PullRequest
3 голосов
/ 24 сентября 2011

Я пытаюсь эффективно передать поток строк из моей программы на С ++ в мою программу на Java, но я не уверен, как это сделать. Может кто-нибудь опубликовать ссылки / объяснить основную идею о том, как реализовать это?

Я думал о том, чтобы записать свои данные в текстовый файл, а затем прочитать текстовый файл из моей Java-программы, но я не уверен, что это будет достаточно быстро. Мне нужно, чтобы одна строка могла быть передана за 16 мс, чтобы мы могли получить около 60 строк данных в программе C ++ за секунду.

Ответы [ 3 ]

2 голосов
/ 24 сентября 2011

Текстовые файлы могут быть легко записаны и прочитаны с содержанием на 60 строк всего за несколько миллисекунд.

Некоторые альтернативы, если вы обнаружите, что у вас все равно возникают проблемы с синхронизацией:

Использовать программирование сокетов. http://beej.us/guide/bgnet/output/html/multipage/index.html. Розетки должны быть достаточно быстрыми.

Существуют и другие альтернативы, такие как служба сообщений Tibco, которая будет на порядок быстрее, чем вам нужно: http://www.tibco.com/

Другой альтернативой может быть использование таблицы mysql для передачи данных и, возможно, просто установка переменной среды, чтобы указать, что таблица должна запрашиваться для самых последних записей.

Или, я полагаю, вы могли бы просто использовать переменную окружения для передачи всей информации - 60 строк не очень много.

Первые два варианта - более респектабельные решения.

0 голосов
/ 24 сентября 2011

В любом случае, это будет так быстро. Файл, вероятно, будет самым медленным и может составлять около 10 мс! Сокет будет аналогичен, если вам также потребуется создать новое соединение (это соединение, а не данные, которые потребуют больше времени). Преимущество использования сокета заключается в том, что отправитель и получатель знают, сколько данных было создано. Если вместо этого вы используете файл, вам нужен другой способ сказать, что файл готов, вы должны прочитать его. например розетка;)

Если C ++ и Java находятся в одном и том же процессе, вы можете использовать ByteBuffer для переноса массива C и импорта в Java примерно за 1 микросекунду.

0 голосов
/ 24 сентября 2011

Сериализация: protobuf или s11n

...