Für die Serialisierung eines Java-Objekts möchte ich den Unterschied zwischen der Verwendung von JSON und allgemeinen Serialisierungswerkzeugen in Bezug auf zeitliche und räumliche Leistung testen.
JSON entscheidet sich, FastJSON zu verwenden.
Das Serialisierungstool verwendet Protostuff und Kyro. Warum nicht Protubuf verwenden? Denn ich finde, dass es für eine Java-Klasse mit Hunderten von bestehenden Eigenschaften etwas anti-menschlich ist, eine neue passende Proto-Datei zu erstellen. Protostuff ist eine verbesserte Version von Protobuf, die es ermöglicht, ein Java-Objekt direkt zu serialisieren, ähnlich wie bei Kyro, ohne so viele Zwischenprozesse wie bei Protobuf. Andere, wie Hession, Java mit Serialisierung usw., sollen deutlich schlechtere Performance haben als Kryo und Protobuf, daher weiß ich nicht, was mich erwartet.
Nach einem einfachen Test stellte ich fest, dass die Lücke ziemlich offensichtlich war, sodass ich das Gefühl hatte, dass keine spezifische Untersuchung nötig war. Schneide einen Absatz aus dem Logbuch aus und schick ihn ab, jeder spürt es.
Kostenzeit ist System.nanoTime(); Alle drei sind die Standardkonfigurationen ohne jegliche Konfiguration. Der Speicherplatz nach der Serialisierung ist etwas geringer als der von Protostuff, und beide sind deutlich größer als bei JSON. Das ist leicht zu verstehen, schließlich sind JSON-Strings lesbar, erzwingen Sie nicht zu viel. Die Zeit für Serialisierung und Deserialisierung ist besser als bei Kyro im Vergleich zu FastJSON, und der Unterschied ist ziemlich offensichtlich.
Zusammenfassend: Wenn es keine extrem hohen Platzanforderungen gibt, könnte Protostuff die beste Wahl sein. Protostuff hat einen zusätzlichen Vorteil gegenüber Kyro, nämlich dass Kyro nutzlos ist, wenn die Java-Klasse nach der Serialisierung und vor der Deserialisierung Felder hinzufügt (was im echten Geschäft unvermeidlich ist). Protostuff kann jedoch verwendet werden, solange es am Ende der Klasse hinzugefügt wird und die Sun-Serie JDK verwendet. Wenn Serialisierung also in Szenarien wie Cache verwendet wird und das serialisierte Objekt lange gespeichert werden muss, kannst du nur Protostuff wählen.
Natürlich kann man bei Bedarf an Lesbarkeit oder Ähnlichem nur JSON verwenden.
|