/ / Est-ce que lire / écrire sur un tuyau est une opération coûteuse? - c, linux, pipe

Est-ce que lire / écrire sur une pipe est une opération coûteuse? - c, linux, pipe

Dans le cadre de mon cours Uni, nous avons été invités à utiliser des tuyaux pour communiquer entre processus pipe() et fork()) pour quelques petits exercices. Pas de problème pour que ça fonctionne ou avec le concept, mais en dehors de ces exigences, je me demande à quel point il est efficace d’écrire et de lire avec un tuyau de ce type?

Si j'ai une valeur que je compresse dans un bloc de 4 octets, vaut-il mieux emballer et écrire 100 valeurs (donc 400 octets) en même temps?

Ou est la performance comparable si je fais 100 écrit chacun de 4 octets?

La canalisation de 400 octets en une fois empêche-t-ellele récepteur fait quelque chose jusqu’à ce que l’écriture soit terminée - en supposant que le récepteur essaie seulement de lire les 4 premiers octets, sera-t-il capable de le faire après leur réécriture, mais avant que tous les 400 ne soient terminés?

Réponses:

4 pour la réponse № 1

Les pipes sont traitées de la même façon que les fichiers (bien sûr,ils ne sont pas sur le disque). Ils sont mis en mémoire tampon de la même manière, et leur traitement est traité de la même façon. Ne tentez pas de mettre manuellement en mémoire tampon un tuyau; ça le fait déjà. Si cela vous préoccupe vraiment, vous pouvez essayer les deux solutions et collecter quelques temps d'exécution. Je vous suggère simplement d'écrire des blocs de 4 octets tels que vous les avez. N’essayez pas d’optimiser si vous n’êtes pas conscient du problème


1 pour la réponse № 2

Je peux vous raconter une anecdote. J'ai déjà travaillé sur un système Web pour une plate-forme Linux intégrée. Nous avons essayé les canaux pour la communication interne, car ils étaient beaucoup plus rapides que les sockets UNIX ou TCP. Nous avons quand même utilisé des sockets, car ils étaient plus simples à utiliser dans notre application. (Nous avions besoin d'une communication bidirectionnelle et les tuyaux ne sont qu'un seul moyen.)