Работа над приложением на базе Android и iOS, которое требует связи с сервером, работающим на том же устройстве. В настоящее время используется петлевое соединение TCP для связи с приложением и сервером (приложение написано на пользовательском уровне, сервер написан на C ++ с использованием Android NDK)
Мне было интересно, улучшит ли производительность замена межсетевого взаимодействия на сокет домена Unix?
Или в целом есть какие-либо доказательства / теории, подтверждающие, что сокет домена Unix даст лучшую производительность, чем соединение с обратной связью TCP?
Ответы:
Да, локальная межпроцессная связь через сокеты домена unix должна быть быстрее, чем связь через loopback-соединения localhost, потому что у вас меньше накладных расходов TCP, см. Здесь .
источник
Этот тест: https://github.com/rigtorp/ipc-bench предоставляет тесты задержки и пропускной способности для сокетов TCP, сокетов домена Unix (UDS) и PIPE.
Снижение задержки на 66% и увеличение пропускной способности почти в 7 раз объясняют, почему для большинства критически важного по производительности программного обеспечения есть собственный протокол IPC.
источник
Redis тесты показывают доменный сокет Unix может быть значительным быстрее , чем TCP шлейф.
Однако эта разница имеет значение только при высокой пропускной способности.
источник
Сокеты домена Unix часто в два раза быстрее, чем сокеты TCP, когда оба узла находятся на одном узле. Протоколы домена Unix не являются фактическим набором протоколов, а представляют собой способ выполнения взаимодействия клиент / сервер на одном хосте с использованием того же API, который используется для клиентов и серверов на разных хостах. Протоколы домена Unix являются альтернативой методам межпроцессного взаимодействия (IPC).
источник