Je veux dire, tout dépends du perfs qu'on vise: une lib partagée, ça peut vite bouffer plus de mémoire et de temps au démarrage qu'un IPC. Et puis, si la lib partagée plante, c'est l'appli qui plante, alors qu'avec un IPC type socket unix, ben, on est pas obligé de mourir si le conjoint se suicide à coup de division par 0...
La ou l'on pourrait avoir un boost de performance entre un IPC et une lib GPL (dont on a le source, donc!), c'est si la lib exporte beaucoup de symboles non utilisés par un programme, et que ce programme est le seul à l'utiliser (ça arrive pas si rarement que ça, d'avoir une lib partagée qui ne l'est pas vraiment...).
Dans ce cas, faire un exécutable qui se lie statiquement au code et communique via socket va réduire l'overhead, contourner la licence, et régler le problème d'instabilité voire même de potentielles escalades de droits (et j'ai parlé que de sockets, qu'on peut en plus trimbaler d'une machine physique à une autre, pas de trucs plus poussés ou l'impact de perf est plus réduit).
Bref, considérer le "shared library" comme la panacée, je trouve ça exagéré. Pour moi, il y a un juste milieu entre le multi-processus, les lib partagées, et les libs statiques, qui change en fonction des besoins en blindage, performance et souplesse.
[^] # Re: Sémantique toxique
Posté par freem . En réponse au journal SSPL: All your service are belong to us. Évalué à 3.
Pas si sûr, ça...
Je veux dire, tout dépends du perfs qu'on vise: une lib partagée, ça peut vite bouffer plus de mémoire et de temps au démarrage qu'un IPC. Et puis, si la lib partagée plante, c'est l'appli qui plante, alors qu'avec un IPC type socket unix, ben, on est pas obligé de mourir si le conjoint se suicide à coup de division par 0...
La ou l'on pourrait avoir un boost de performance entre un IPC et une lib GPL (dont on a le source, donc!), c'est si la lib exporte beaucoup de symboles non utilisés par un programme, et que ce programme est le seul à l'utiliser (ça arrive pas si rarement que ça, d'avoir une lib partagée qui ne l'est pas vraiment...).
Dans ce cas, faire un exécutable qui se lie statiquement au code et communique via socket va réduire l'overhead, contourner la licence, et régler le problème d'instabilité voire même de potentielles escalades de droits (et j'ai parlé que de sockets, qu'on peut en plus trimbaler d'une machine physique à une autre, pas de trucs plus poussés ou l'impact de perf est plus réduit).
Bref, considérer le "shared library" comme la panacée, je trouve ça exagéré. Pour moi, il y a un juste milieu entre le multi-processus, les lib partagées, et les libs statiques, qui change en fonction des besoins en blindage, performance et souplesse.