Frage

Hat jemand Informationen zu den Leistungsmerkmalen von Protokollpuffern im Vergleich zu BSON (binäres JSON) oder im Vergleich zu JSON im Allgemeinen?

  • Drahtstärke
  • Serialisierungsgeschwindigkeit
  • Deserialisierungsgeschwindigkeit

Dies scheinen gute Binärprotokolle für die Verwendung über HTTP zu sein.Ich frage mich nur, was auf lange Sicht für eine C#-Umgebung besser wäre.

Hier sind einige Informationen, die ich gelesen habe BSON Und Protokollpuffer.

War es hilfreich?

Lösung

Sparsamkeit ist ebenfalls eine weitere Protokollpuffer-ähnliche Alternative.

Es gibt gute Benchmarks aus der Java-Community zur Serialisierung/Deserialisierung und zur Leitungsgröße dieser Technologien: https://github.com/eihay/jvm-serializers/wiki

Im Allgemeinen hat JSON eine etwas größere Wire-Größe und etwas schlechteres DeSer, gewinnt aber an Allgegenwärtigkeit und der Fähigkeit, es ohne die Quell-IDL einfach zu interpretieren.Der letzte Punkt ist etwas, das Apache Avro versucht zu lösen, und es übertrifft beide in Bezug auf die Leistung.

Microsoft hat ein C#-NuGet-Paket veröffentlicht Microsoft.Hadoop.Avro.

Andere Tipps

Dieser Beitrag vergleicht Serialisierung Geschwindigkeiten und Größen in .NET, einschließlich JSON, BSON und XML.

http: //james.newtonking .com / Archiv / 2010/01/01 / net-Serialisierung-Performance-comparison.aspx

Hier sind einige aktuelle Benchmarks die Leistung der beliebten .NET Serializer zeigt.

Die Brennen Monks Benchmarks zeigen die Leistung eines einfachen POCO, während die umfassende North Benchmarks Serialisierung zeigt die kombinierten Ergebnisse eine Zeile in jeder Tabelle von Microsofts Northwind-Datensatz Serialisierung.

eingeben Bild Beschreibung hier

Grundsätzlich Protokollpuffer ( protobuf-net ) um 7x schneller als Bibliothek der schnellste Basisklasse Serializer in .NET (XML DataContractSerializer). Es ist auch kleiner als die Konkurrenz, wie es ist auch 2,2x kleiner als Microsofts kompakteste Serialisierungsformat (JsonDataContractSerializer).

ServiceStack Text Serializer sind in der Nähe, die Leistung des binären protobuf-net, um passende, wo seine Json Serializer ist nur 2.58x langsamer als protobuf-net.

Protokollpuffer ist für den Draht entworfen:

  1. sehr kleine Nachrichtengröße - ein Aspekt ist sehr effizient mit variabler Größe Integer-Darstellung
  2. .
  3. Sehr schnelle Dekodieren -. Es ist ein binäres Protokoll
  4. protobuf erzeugt sehr effizient C ++ für die Codierung und die Decodierung Nachrichten - Hinweis: Wenn Sie alle var-Zahlen oder statische Größe Elemente in sie kodieren wird es kodieren und dekodieren bei determinis Geschwindigkeit
  5. .
  6. Es bietet ein sehr reiches Datenmodell -. Effizient sehr komplexe Datenstrukturen kodieren

JSON ist nur Text, und es muss sein analysiert . Hinweis: Codieren eines „Milliarde“ int in es dauern würde, eine ganze Reihe von Zeichen: Milliarden = 12 Zeichen sind (long-Skala), in binärem es in einem uint32_t paßt Was ist nun mit einem Doppel zu kodieren versuchen? das wäre weit weit schlimmer.

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