Trabalhar em um aplicativo baseado em Android e iOS que requer comunicação com um servidor em execução no mesmo dispositivo. Atualmente usando conexão de loopback TCP para comunicação com o aplicativo e o servidor (aplicativo escrito na camada do usuário, servidor escrito em C ++ usando Android NDK)
Eu queria saber se a substituição da intercomunicação pelo soquete do domínio Unix melhoraria o desempenho?
Ou, em geral, há alguma evidência / teoria que prova que o soquete de domínio Unix daria melhor desempenho do que a conexão de loopback TCP?
Respostas:
Sim, a comunicação local entre processos por soquetes de domínio unix deve ser mais rápida do que a comunicação por conexões de loopback localhost porque você tem menos sobrecarga de TCP, veja aqui .
fonte
Este benchmark: https://github.com/rigtorp/ipc-bench fornece testes de latência e taxa de transferência para soquetes TCP, Unix Domain Sockets (UDS) e PIPEs.
A redução de latência de 66% e quase 7 vezes mais taxa de transferência explicam por que a maioria dos softwares de desempenho crítico tem seu próprio protocolo IPC personalizado.
fonte
O benchmark Redis mostra que o soquete de domínio unix pode ser significativamente mais rápido do que o loopback de TCP.
No entanto, essa diferença só importa quando o rendimento é alto.
fonte
Os soquetes de domínio Unix costumam ser duas vezes mais rápidos que um soquete TCP quando ambos os pares estão no mesmo host. Os protocolos de domínio Unix não são um conjunto de protocolos real, mas uma maneira de realizar a comunicação cliente / servidor em um único host usando a mesma API usada para clientes e servidores em hosts diferentes. Os protocolos de domínio Unix são uma alternativa aos métodos de comunicação entre processos (IPC).
fonte