Gibt es irgendwelche perfomormance Unterschiede zwischen Binär- und XML-Serialisierung?

StackOverflow https://stackoverflow.com/questions/394588

  •  23-08-2019
  •  | 
  •  

Frage

sowohl in Bezug auf das Parsen (Serialisierung, Deserialisierung) und Senden von Paketen über das Netzwerk ist es eine gute Abschätzung der Leistungsunterschiede zwischen Binär- und XML-Serialisierung?

War es hilfreich?

Lösung

Nein.

Es hängt in hohem Maße ab, welche Art von Daten in dem XML-Dokument selbst ist. Wenn Sie eine Menge von strukturierten Daten haben, wird der Aufwand für XML groß sein. Zum Beispiel, wenn Sie Ihre Daten wie folgt aussehen:

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

Sie werden viel mehr Aufwand als, wenn Sie ein XML-Dokument, das wie folgt aussieht:

<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>

So ist es nicht wirklich eine gute Frage ist. Es hängt stark von den Daten, die Sie beabsichtigen, zu senden und wie / ob Sie komprimieren es.

Andere Tipps

Der größte Unterschied zwischen BinaryFormatter und XML-Serialisierung ist die Portabilität; BinaryFormatter ist schwer, zwischen den Versionen zu gewährleisten, so dass nur wirklich geeignet für kurzfristige Speicherung oder Übertragung ist.

Sie können jedoch das Beste von beiden bekommen, und hat es kleineren und hat es schneller, durch maßgeschneiderte binäre Serialisierung mit - und Sie haben nicht einmal zu do it yourself ;-p

protobuf-net ist eine .NET-Implementierung von Googles Protocol Buffers binäre Serialisierung spec ; es ist kleiner als entweder XmlSerializer oder BinaryFormatter, voll portable (nicht nur zwischen den Versionen - Sie pb Stream, die zum Beispiel laden, Java, etc.), erweiterbar und schnell. Es ist auch ziemlich umfassend getestet, mit einer angemessenen Anzahl von Benutzern.

Eine vollständige Aufschlüsselung der Größe und Geschwindigkeit, Abdeckung XmlSerializer, BinaryFormatter, DataContractSerializer und protobuf-net ist hier .

Instinktiv möchte man sagen, dass binäre effizienter ist, aber es hängt tatsächlich auf die Daten serialisiert werden.

Diesen Artikel Check out: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

zeigt nur die Leistung aus ist nicht die einzige Metrik, die Sie mögen, betrachten.

  • Einfache Konstruktion. Haben Sie mehrere Tage / Wochen haben eine Serializer / Deserializer Routine und testen Sie es gründlich zu bauen oder dass die Zeit besser auf Funktionen ausgegeben werden könnte.
  • Einfache Daten verbrauchen. Kann ein Client einen vorgefertigten Open-Source-Parser verwenden, oder müssen sie eine Reihe von (möglicherweise Buggy) implementieren codiert selbst?
  • Einfache Fehlersuche. Wird in der Lage, die Daten im Transit-Hilfe anzuzeigen zu debuggen? Dann wird ein binäres Format wird dazu neigen, alle Probleme zu verschleiern.
  • , was die Wartungskosten für jede Methode ist?

Persönlich würde ich einen veröffentlichten XML-Standard und Open-Source-Parsing-Bibliotheken verwenden, bis eine Performance-Engpass durch tatsächliche Tests nachgewiesen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top