Travailler sur une application basée sur Android et iOS qui nécessite une communication avec un serveur fonctionnant sur le même appareil. Utilisation actuelle d'une connexion de bouclage TCP pour communiquer avec l'application et le serveur (application écrite dans la couche utilisateur, serveur écrit en C ++ à l'aide d'Android NDK)
Je me demandais si le remplacement de la communication inter par un socket de domaine Unix améliorerait les performances?
Ou en général, y a-t-il des preuves / théorie qui prouvent que la socket du domaine Unix donnerait de meilleures performances que la connexion TCP en boucle?
Réponses:
Oui, la communication interprocessus locale par les sockets de domaine Unix devrait être plus rapide que la communication par des connexions localeshost en boucle car vous avez moins de surcharge TCP, voir ici .
la source
Ce benchmark: https://github.com/rigtorp/ipc-bench fournit des tests de latence et de débit pour les sockets TCP, les sockets de domaine Unix (UDS) et les PIPE.
Une réduction de la latence de 66% et un débit presque 7 fois supérieur expliquent pourquoi la plupart des logiciels critiques pour les performances disposent de leur propre protocole personnalisé IPC.
la source
Le benchmark Redis montre que le socket de domaine Unix peut être beaucoup plus rapide que le bouclage TCP.
Cependant, cette différence n'a d'importance que lorsque le débit est élevé.
la source
Les sockets de domaine Unix sont souvent deux fois plus rapides qu'une socket TCP lorsque les deux homologues sont sur le même hôte. Les protocoles de domaine Unix ne sont pas une véritable suite de protocoles, mais un moyen d'effectuer une communication client / serveur sur un seul hôte en utilisant la même API que celle utilisée pour les clients et les serveurs sur des hôtes différents. Les protocoles de domaine Unix sont une alternative aux méthodes de communication interprocessus (IPC).
la source