Быстрее ли портировать данные из программы на C ++ на вход программы Java через сокеты, чем через необработанный файл json или xml на сервере? - PullRequest
2 голосов
/ 17 апреля 2011

Каков наилучший способ решения проблем с точки зрения скорости / производительности?

Откуда приходят такие вещи, как «Apache Thrift» и каковы преимущества?

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

Спасибо всем

Ответы [ 2 ]

5 голосов
/ 17 апреля 2011

Предположим, вы имеете в виду, что оба процесса уже запущены, а затем будут через сокеты.

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

Даже игнорируя это, ваш локальный интерфейс будет иметь более высокую скорость передачи данных, чем ваш дисковый контроллер, с возможным исключением RAID-массива 10 Гбит по оптоволоконному каналу с дисками 15k RPM в нем.

0 голосов
/ 17 апреля 2011

Попробуйте.Другого способа выяснить просто нет.

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

Всегда помните, что этокоммуникация включает в себя следующие шаги:

  1. Кодирование ваших данных в поток байтов (JSON, XML, YAML, X.509 DER, сериализация Java)
  2. Передача этого потока байтов (TCPсокет, сокет UNIX, файловая система, виртуальный диск, каналы)
  3. Декодирование потока байтов в данные (аналогично шагу 1)

Шаг 1 и 2 полностью независимы, поэтому примите этоучитывается при тестировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...