Pre serializáciu Java objektu by som rád otestoval rozdiel medzi použitím JSON a používaním všeobecných nástrojov na serializáciu z hľadiska časového a priestorového výkonu.
json sa rozhodol použiť fastjson.
Nástroj na serializáciu používa Protostuff a Kyro. Prečo nepoužiť protobuf? Pretože mám pocit, že pre Java triedu so stovkami existujúcich vlastností je vytváranie nového zodpovedajúceho proto súboru trochu neľudské. Protostuff je vylepšená verzia Protobufu, ktorá umožňuje serializovať Java objekt priamo, pričom ho používate podobne ako Kyro, bez toľkých medziprocesov ako Protobuf. Iné, ako Hession, Java so serializáciou a podobne, majú vraj oveľa horší výkon ako Kryo a Protobuf, takže neviem, čo očakávať.
Po jednoduchom teste som zistil, že medzera je dosť zjavná, takže som cítil, že nie je potrebné robiť konkrétne vyšetrenie. Vystrihnite odsek z denníka a pošlite ho von, všetci to cítia.
náklady na čas sú System.nanoTime(); Všetky tri sú predvolené konfigurácie bez akejkoľvek konfigurácie. Priestorová plocha po serializácii je o niečo nižšia ako u protostuff, a oba sú oveľa vyššie než pri JSON. Je to ľahko pochopiteľné, napokon, json reťazce sú čitateľné, nenútejte príliš veľa. Čas potrebný na serializáciu a deserializáciu je lepší ako pri Kyro oproti FastJSON a rozdiel je dosť zrejmý.
Takže na záver, ak neexistujú extrémne náročné požiadavky na priestor, Protostuff môže byť najlepšou voľbou. Protostuff má oproti Kyro ďalšiu výhodu, a to, že ak trieda Java pridáva polia po serializácii a pred deserializáciou (čo je v reálnom biznise nevyhnutné), Kyro bude zbytočný. Avšak protostuff sa dá používať, pokiaľ je pridaný na konci triedy a používa sériu sun JDK. Preto, ak sa serializácia používa v scenároch ako cache a serializovaný objekt musí byť uložený dlhý čas, môžete zvoliť len protostuff.
Samozrejme, ak je potrebná čitateľnosť alebo niečo podobné, môžete použiť iba json.
|