Question

en termes de l'analyse syntaxique (sérialisation, désérialisation) et l'envoi de paquets sur le réseau est-il une bonne estimation des différences de performance entre sérialisation binaire et xml?

Était-ce utile?

La solution

Non.

Il dépend fortement de ce type de données est à l'intérieur du document XML lui-même. Si vous avez beaucoup de données structurées, les frais généraux pour XML sera grand. Par exemple, si vos données ressemble à:

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

Vous aurez beaucoup plus de frais généraux que si vous avez un document XML qui ressemble à:

<book name="bible">
 In the beginning God created the heavens and the earth. 
 Now the earth was formless and empty ... 
 And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>

Il est donc pas vraiment une bonne question. Il dépend fortement des données que vous souhaitez envoyer, et comment / si vous le compresser.

Autres conseils

La plus grande différence entre sérialisation BinaryFormatter et xml est la portabilité; BinaryFormatter est difficile de garantir entre les versions, donc n'est vraiment adapté pour le stockage ou le transfert à court terme.

Cependant, vous pouvez obtenir le meilleur des deux, et ont plus petit et avoir plus rapide, en utilisant la sérialisation binaire sur mesure - et vous ne même pas à faire vous-même ;-P

protobuf-net est une implémentation .NET du protocole de Google tampons spec sérialisation binaire ; il est plus petit que soit XmlSerializer ou BinaryFormatter, complètement portable (non seulement entre les versions - vous pouvez charger un flux de plomb dans, par exemple, java, etc.), extensible et rapide. Il est également testé assez globalement, avec un bon nombre d'utilisateurs.

Une analyse complète de la taille et de la vitesse, couvrant XmlSerializer, BinaryFormatter, DataContractSerializer et protobuf-net est ici .

Instinctivement vous voulez dire que binaire est plus efficace, mais cela dépend en fait des données en cours de sérialisation.

Consultez cet article: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

Il suffit de souligner les performances ne sont pas la seule mesure que vous voudrez peut-être regarder.

  • Facilité de construction. Avez-vous plusieurs jours / semaines pour construire un sérialiseur / désérialiseur de routine et de le tester à fond ou que le temps pourrait être mieux dépensé sur les fonctionnalités.
  • Facilité de consommer les données. Un client peut utiliser un analyseur open source pré-construits ou faire dont ils ont besoin pour mettre en œuvre un tas de (potentiellement bogué) se code?
  • Facilité de débogage. Est-ce que d'être en mesure d'afficher les données en transit pour déboguer? Ensuite, un format binaire aura tendance à obscurcir les problèmes.
  • Quel est le coût d'entretien pour chaque méthode?

Personnellement, j'utiliser un standard XML publié et les bibliothèques d'analyse syntaxique open source jusqu'à ce qu'un goulot d'étranglement de performance est prouvée par des tests réels.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top