À quel type d’utilisation IPC est-il destiné et est-il correct d’envoyer des blocs JSON plus importants (des centaines de caractères) entre les processus utilisant IPC? Dois-je essayer d’envoyer un message aussi petit que possible à l’aide d’IPC ou les gains de performance découlant de la réduction de la taille des messages ne valent-ils pas la peine?
À quel type d’utilisation IPC est-il destiné et est-il correct d’envoyer des blocs JSON plus importants (des centaines de caractères) entre les processus utilisant IPC?
Au fond, IPC est ce qu’il dit sur l’étain. C’est un outil à utiliser lorsque vous devez communiquer des informations entre des processus, quels qu’ils soient. Le sujet est très vaste et inclut techniquement l’allocation de mémoire partagée et la communication manuelle, mais compte tenu du ton de la question et des balises, je suppose que vous parlez des fonctionnalités fournies par le système d’exploitation.
Wikipedia fait un très bon travail en discutant de l’utilisation de l’IPC, et je ne pense pas pouvoir faire beaucoup mieux, alors je me concentrerai sur la deuxième question.
Dois-je essayer d’envoyer un message aussi petit que possible à l’aide d’IPC ou les gains de performance découlant de la réduction de la taille des messages ne valent-ils pas la peine?
Cela sent un peu comme une micro-optimisation. Je ne peux pas dire définitivement, car je ne suis pas au courant du code source chez Microsoft et Apple, et je ne veux vraiment pas explorer l’implémentation d’IPC par le kernel Linux, mais voici quelques points:
netstat
. Lorsque cet exécutable est exécuté, la mémoire doit être allouée, le processus doit être chargé à partir du disque et toute correction d’adresse que le système d’exploitation doit effectuer est effectuée avant même que le processus puisse démarrer. Cela se fait si rapidement que vous remarquez à peine. Sur Windows, netstat
est à environ 40k, et il se charge presque instantanément dans la mémoire. (Bloc-notes, un autre chargeur rapide est 10 fois plus gros, mais il se lance encore dans un court laps de temps.) Si l’IPC se situe entre des processus sur le même système, je ne pense pas que cela vaut la peine de faire beaucoup d’efforts pour raser les octets de votre message. Rendez votre message facile à déboguer.
Dans le cas où la communication se passe entre des processus sur différentes machines, vous pouvez penser à quelque chose, après avoir passé beaucoup de temps à déboguer des problèmes simples avec un meilleur format de données, quelques dizaines de millisecondes de plus. ne pas rendre les données plus difficiles à parsingr / déboguer. Rappelez-vous les trois règles d’optimisation 1 :
1 Les deux premières règles sont généralement atsortingbuées à Michael Jackson. ( Celui-ci pas celui-ci )