Kurze Einführung
Dieser Blog vergleicht hauptsächlich die Serialisierungs- und Deserialisierungsleistung von Xml-, Json-, Hessian- und Protokollpuffern und lässt dabei die Grundkonzepte von Xml und Json außen vor. Hessian: Hessian ist ein leichtgewichtiges Remote-Onhttp-Tool, das RMI-Funktionalität mit dem binären RPC-Protokoll und integrierten Serialisierungsfunktionen bereitstellt. Protokollpuffer: Ein Format für den Datenaustausch von Google, das sprachunabhängig ist und da es sich um ein Binärformat handelt, deutlich schneller ist als XML für den Datenaustausch und für die Datenkommunikation zwischen verteilten Anwendungen oder in heterogenen Umgebungen genutzt werden kann. Als effizientes und kompatibles binäres Datenübertragungsformat kann es in vielen Bereichen wie Netzwerkübertragung, Konfigurationsdateien, Datenspeicherung usw. verwendet werden. Google bietet Java-, C++- und Python-Implementierungen an, und inzwischen gibt es Implementierungen von Sprachen wie C# im Internet.
Serialisierung und Deserialisierung
XML: Verwenden Sie den XmlSerializer, der mit .Net geliefert wird. Json: Es verwendet ServiceStack.Text, das leistungsfähiger ist als Newtonsoft.Json, aber der schnellste sollte der fastJSON.net sein. Hessian: Ich benutze die HessianCSharp-Bibliothek, heruntergeladen von nuget. Protokollpuffer: Verwendung von protobuf-net, heruntergeladen von nuget. Im Folgenden werden im Test verwendete Entitäten aufgeführt.
Der i7HQ 2,6HZ-Prozessor, der in der Testmaschine verwendet wird. Hier sind die Ergebnisse des Tests Serialisierung
Deserialisierung
Bytelänge nach Serialisierung
Sprechen wir zuerst über die Serialisierung: Hier wird sie jeweils 100-mal, 1000-, 10000- bzw. 100.000-mal getestet, die Koordinate ist die Abschlusszeit, die Einheit ist Millisekunden, man sieht, dass bei Tests innerhalb von 10.000 Mal der Zeitaufwand bei 4 Arten von Serialisierung sehr gering ist, alle innerhalb von 200 Millisekunden, nach 10.000 bis 100.000 Mal beginnen sie alle zu wachsen, am schlimmsten ist Xml, am besten sind Protokollpuffer, aber wenn es innerhalb von 10.000 Mal ist, Hessian ist besser als Protokollpuffer. Innerhalb von 10.000 Deserialisierungen gibt es kaum Unterschiede, aber bei 10.000 Mal sehen wir bereits, dass Hessian zeitaufwändiger ist, und bei 100.000 Mal übertrifft Hessian direkt Xml, was mich immer glauben lässt, dass mein Code ein Problem hat und die beste Leistung immer noch Protokollpuffer sind. Die serialisierte Bytelänge ist verständlicherweise die längste in XML, da die Datei viele Endtags enthält (),</Name> und Protocol Buffers ist immer noch die beste.
Basierend auf dem obigen Diagramm können wir fast schnell schließen, dass Protocol Buffers der beste ist, aber ich denke, wir müssen ihn dennoch umfassend aus folgenden Aspekten bewerten: 1. Lesbarkeit: Xml und Json sind beide Text nach der Serialisierung, und die Lesbarkeit ist sehr gut, zum Beispiel können wir bei einem Fehler in der Mitte die ausgetauschten Daten leicht ansehen und sogar die Daten simulieren, um sie zu testen; Sowohl der Hessian- als auch der Protokollpuffer sind binär, und der Inhalt ist nach der Serialisierung unlesbar, was sich gewisser auf die Fehlersuche am System auswirkt. 2. Vielseitigkeit: XML und JSON sind bereits alte Datenaustauschformate, und dies sind die beiden Formate für den Datenaustausch zwischen allgemeinen Systemen. Sowohl Hessian- als auch Protokollpuffer sind relativ unbeliebt und werden weniger genutzt. 3. Bequemlichkeit: Hessian ist tatsächlich ein vollständiges RPC-Framework, definiert die Schnittstelle auf der Serverseite und implementiert die Schnittstelle, kopiert die Schnittstelle zum Client. Nach ein wenig Programmierung können wir die Serverseite aufrufen, ähnlich wie eine lokale Methode, was in den anderen drei Tools nicht verfügbar ist, und die Leistung ist nicht schlecht.
|