Pro serializaci Java objektu bych rád otestoval rozdíl mezi použitím JSON a obecnými nástroji pro serializaci z hlediska časového a prostorového výkonu.
json volí použití fastjson.
Nástroj pro serializaci používá Protostuff a Kyro. Proč nepoužít protobuf? Protože mám pocit, že pro Java třídu se stovkami existujících vlastností je vytvoření nového shodného proto souboru trochu proti lidskosti. Protostuff je vylepšená verze Protobufu, která umožňuje serializovat Java objekt přímo, použít ho trochu jako Kyro, bez tolika mezilehlých procesů jako Protobuf. Jiné, jako Hession, Java se serializací atd., mají údajně mnohem horší výkon než Kryo a Protobuf, takže nevím, co očekávat.
Po jednoduchém testu jsem zjistil, že mezera je dost zřejmá, takže jsem cítil, že není potřeba dělat konkrétní hodnocení. Vystřihněte odstavec z deníku a pošlete ho ven, všichni to cítí.
cost time je System.nanoTime(); Všechny tři jsou výchozí konfigurace bez jakékoli konfigurace. Prostorová plocha po serializaci je o něco nižší než u protostuff, a oba jsou mnohem větší než u JSON. To je snadné pochopit, koneckonců, json řetězce jsou čitelné, nenuťte to příliš. Čas potřebný na serializaci a deserializaci je lepší než u Kyro oproti FastJSONu a rozdíl je docela zřejmý.
Takže závěrem, pokud nejsou extrémně náročné požadavky na prostor, Protostuff může být nejlepší volbou. Protostuff má navíc výhodu oproti Kyro, a to že pokud třída Java přidá pole po serializaci a před deserializací (což je v reálném byznysu nevyhnutelné), Kyro bude k ničemu. Nicméně protostuff lze použít, pokud je přidán na konci kurzu a používá JDK ze série Sun Series. Pokud se tedy serializace používá například v cache a serializovaný objekt musí být uložen dlouho, můžete zvolit jen protostuff.
Samozřejmě, pokud je potřeba čtitelnost nebo něco podobného, můžete použít jen json.
|