У меня есть Java-программа, которая взаимодействует с программой на C++, используя сокет на localhost. Могу ли я ожидать получить какую-либо производительность (либо латентность, пропускную способность, либо и то и другое), перейдя на использование родной операционной системы? В первую очередь меня интересует Windows, но любое понимание, связанное с Unix/Linux/OSX, также приветствуется.Производительность сокетов против труб
EDIT: Уточнение: обе программы работают на одном хосте, в настоящее время обмениваются данными через сокет, т. Е. Путем соединения TCP/IP с localhost :. Мой вопрос в том, каковы потенциальные преимущества в производительности перехода на использование (локальных) именованных каналов (Windows) или их эквивалент Unix (сокет домена AF_UNIX?).
Если IPC действительно является узким местом, как насчет использования JNI и запуска его в том же процессе? Вызов функции, вероятно, быстрее, чем любой IPC. – Ken
Существует несколько причин. Стабильность JVM, вероятно, самая важная. Внешний код должен иметь возможность загружать сторонние библиотеки DLL различного качества, и я не хочу, чтобы они могли удалить JVM при их сбое. Не нужно создавать и связываться с библиотеками JVM, также является большой победой. – JesperE