Trabajar en una aplicación basada en Android e iOS que requiere comunicación con un servidor que se ejecuta en el mismo dispositivo. Actualmente se usa una conexión de bucle de retorno TCP para comunicarse con la aplicación y el servidor (aplicación escrita en la capa de usuario, servidor escrito en C ++ usando Android NDK)
Me preguntaba si reemplazar la intercomunicación con el socket de dominio Unix mejoraría el rendimiento.
O, en general, ¿hay alguna evidencia / teoría que demuestre que el socket de dominio Unix daría un mejor rendimiento que la conexión de bucle de retorno TCP?
Respuestas:
Sí, la comunicación local entre procesos mediante sockets de dominio Unix debería ser más rápida que la comunicación mediante conexiones de bucle invertido localhost porque tiene menos sobrecarga de TCP, consulte aquí .
fuente
Este punto de referencia: https://github.com/rigtorp/ipc-bench proporciona pruebas de latencia y rendimiento para sockets TCP, Sockets de dominio Unix (UDS) y PIPE.
La reducción de la latencia del 66% y casi 7 veces más de rendimiento explican por qué la mayoría del software de rendimiento crítico tiene su propio protocolo personalizado de IPC.
fuente
El banco de pruebas de Redis muestra que el socket de dominio Unix puede ser significativamente más rápido que el loopback de TCP.
Sin embargo, esta diferencia solo importa cuando el rendimiento es alto.
fuente
Los sockets de dominio Unix suelen ser dos veces más rápidos que un socket TCP cuando ambos pares están en el mismo host. Los protocolos de dominio Unix no son un conjunto de protocolos real, sino una forma de realizar la comunicación cliente / servidor en un solo host utilizando la misma API que se utiliza para clientes y servidores en diferentes hosts. Los protocolos de dominio Unix son una alternativa a los métodos de comunicación entre procesos (IPC).
fuente