Brève introduction
Ce blog compare principalement les performances de sérialisation et de désérialisation des tampons Xml, Json, Hessian et protocoles, en mettant de côté les concepts de base de Xml et Json. Hessois : Hessian est un outil léger de télécommande onhttp qui offre la fonctionnalité RMI en utilisant le protocole RPC binaire et des capacités de sérialisation intégrées. Protocol Buffers : Un format d’échange de données de Google, indépendant du langage, et parce qu’il est binaire, il est beaucoup plus rapide que l’utilisation du xml pour l’échange de données, et peut être utilisé pour la communication de données entre applications distribuées ou l’échange de données dans des environnements hétérogènes. En tant que format de transmission de données binaire efficace et compatible, il peut être utilisé dans de nombreux domaines tels que la transmission réseau, les fichiers de configuration, le stockage de données, etc. Google propose des implémentations Java, C++, Python, et il existe désormais des implémentations de langages comme C# sur Internet.
Sérialisation et désérialisation
XML : Utilisez le XmlSerializer fourni avec .Net. Json : Il utilise ServiceStack.Text, qui est plus performant que Newtonsoft.Json, mais le plus rapide devrait être fastJSON.net. Hessois : En utilisant la bibliothèque HessianCSharp, téléchargée depuis Nuget. Tampons de protocole : Utilisation de protobuf-net, téléchargé depuis Nuget. Voici les entités utilisées dans le test.
Le processeur i7HQ 2,6 Hz utilisé dans la machine de test. Voici les résultats du test Sérialisation
Désérialisation
Longueur d’octet après sérialisation
Parlons d’abord de la sérialisation, ici elle est testée 100 fois, 1000 fois, 10 000 fois et 10 0000 fois respectivement, l’ordonnée est le temps d’achèvement, l’unité est des millisecondes, vous pouvez voir que lors des tests dans 10 000 fois, la consommation de temps de 4 types de sérialisation est très faible, toutes en 200 millisecondes, après 10 000 fois, à 100 000 fois, elles commencent toutes à croître, le pire est le Xml, le meilleur est les tampons de protocole, mais lorsqu’elle est à moins de 10 000 fois, La hessian est meilleure que les tampons protocolaires. Il n’y a pas beaucoup de différence dans 10 000 désérialisations, mais à 10 000 fois, on voit déjà que Hessian est plus chronophage, et à 100 000 fois, Hessian dépasse directement le Xml, ce qui me fait toujours penser qu’il y a un problème avec mon code, et que la meilleure performance reste les Protocol Buffers. La longueur d’octet sérialisé est compréhensiblement la plus longue en Xml, car le fichier contient beaucoup de balises de fin (),</Name> et Protocol Buffers reste le meilleur.
D’après le graphique ci-dessus, on peut presque rapidement conclure que Protocol Buffers est le meilleur, mais je pense qu’il faut encore l’évaluer de manière exhaustive à partir des aspects suivants : 1. Lisibilité : Xml et Json sont tous deux du texte après sérialisation, et la lisibilité est très bonne, par exemple, s’il y a une erreur au milieu, nous pouvons facilement visualiser les données échangées, et même simuler les données pour tester ; Les tampons Hessien et Protocol Buffers sont binaires, et le contenu devient illisible après sérialisation, ce qui aura un certain impact sur le dépannage du système. 2. Polyvalence : XML et JSON sont déjà d’anciens formats d’échange de données, et ce sont les deux formats d’échange de données entre systèmes généraux. Les tampons hessiens et protocolaires sont relativement impopulaires et moins utilisés. 3. Commodité : Hessian est en fait un framework RPC complet, on définit l’interface côté serveur et on l’implémente, on copie l’interface vers le client Après un peu de codage, on peut appeler le côté serveur comme une méthode locale, ce qui n’est pas disponible dans les trois autres outils, et les performances ne sont pas mauvaises.
|