Voor de serialisatie van een Java-object wil ik het verschil testen tussen het gebruik van JSON en het gebruik van algemene serialisatietools qua temporele en ruimtelijke prestaties.
JSON kiest ervoor om FastJSON te gebruiken.
De serialisatietool gebruikt Protostuff en Kyro. Waarom geen Protubuf gebruiken? Omdat ik vind dat voor een Java-klasse met honderden bestaande properties, het aanmaken van een nieuw bijpassend proto-bestand een beetje anti-menselijk is. Protostuff is een verbeterde versie van Protobuf, waarmee je een Java-object direct kunt serialiseren, met een beetje zoals Kyro, zonder zoveel tussenliggende processen als bij Protobuf. Andere, zoals Hession, Java met serialisatie, enzovoort, zouden veel slechtere prestaties hebben dan Kryo en Protobuf, dus ik weet niet wat ik kan verwachten.
Na een eenvoudige test ontdekte ik dat het gat vrij duidelijk was, dus vond ik dat er geen specifieke evaluatie nodig was. Knip een alinea uit het logboek en stuur het op, iedereen voelt het.
kostentijd is System.nanoTime(); Alle drie zijn de standaardconfiguraties zonder enige configuratie. De ruimtevoetafdruk na serialisatie is iets lager dan die van protostuff, en beide zijn veel groter dan JSON. Dit is makkelijk te begrijpen, want json-strings zijn leesbaar, forceer niet te veel. De tijd die nodig is voor serialisatie en deserialisatie is beter dan bij Kyro ten opzichte van FastJSON, en het verschil is vrij duidelijk.
Dus samenvattend, als er geen extreem veeleisende ruimtevereisten zijn, kan Protostuff de beste keuze zijn. Protostuff heeft een extra voordeel ten opzichte van Kyro, namelijk dat als de java-klasse velden toevoegt na serialisatie en vóór deserialisatie (wat onvermijdelijk is in het echte bedrijfsleven), Kyro nutteloos zal zijn. Protostuff kan echter gebruikt worden zolang het aan het einde van de les wordt toegevoegd en de sun series JDK gebruikt. Dus als serialisatie wordt gebruikt in scenario's zoals cache, en het geserialiseerde object moet lange tijd worden opgeslagen, kun je alleen protostuff kiezen.
Natuurlijk, als er behoefte is aan leesbaarheid of zoiets, kun je alleen json gebruiken.
|