Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 14559|Răspunde: 0

[Sursă] Serializare Java kryo/protobuf/protostuff sau comparație de performanță JSON

[Copiază linkul]
Postat pe 15.07.2019 21:16:23 | | |
Pentru serializarea unui obiect Java, aș dori să testez diferența dintre utilizarea JSON și utilizarea instrumentelor generale de serializare în termeni de performanță temporală și spațială.

JSON alege să folosească fastjson.

Instrumentul de serializare folosește Protostuff și Kyro. De ce să nu folosești protobuf? Pentru că simt că pentru o clasă Java cu sute de proprietăți existente, crearea unui nou fișier proto potrivit este puțin anti-umană. Protostuff este o versiune îmbunătățită a Protobuf, care îți permite să serializezi direct un obiect Java, folosindu-l puțin ca Kyro, fără la fel de multe procese intermediare ca Protobuf. Alții, precum Hession, Java cu serializare etc., se spune că au performanțe mult mai slabe decât Kryo și Protobuf, așa că nu știu la ce să mă aștept.

După un test simplu, am constatat că diferența era destul de evidentă, așa că am simțit că nu era nevoie să fac o evaluare specifică. Taie un paragraf din jurnal și trimite-l, toată lumea îl simte.

timp de cost este System.nanoTime(); Toate trei sunt configurațiile implicite, fără nicio configurație.
Amprenta spațială după serializare este puțin mai mică decât cea a protostuff-ului, iar ambele sunt mult mai mari decât în JSON. Este ușor de înțeles, până la urmă, șirurile json sunt lizibile, nu forța prea mult.
Timpul necesar pentru serializare și deserializare este mai bun decât în Kyro față de FastJSON, iar diferența este destul de evidentă.

Așadar, în concluzie, dacă nu există cerințe extrem de solicitante pentru spațiu, Protostuff ar putea fi cea mai bună alegere. Protostuff are un avantaj suplimentar față de Kyro, și anume că, dacă clasa java adaugă câmpuri după serializare și înainte de deserializare (ceea ce este inevitabil în afaceri reale), Kyro va fi inutil. Totuși, protostuff poate fi folosit atâta timp cât este adăugat la finalul cursului și folosește seria sun JDK. Prin urmare, dacă serializarea este folosită în scenarii precum cache, iar obiectul serializat trebuie stocat mult timp, poți alege doar protostuff.

Desigur, dacă este nevoie de lizibilitate sau ceva de genul, poți folosi doar json.




Precedent:asp.net Personalizează numele ID-ului sesiunii
Următor:Comparație între performanța Protobuf și JSON pe platforma .NET
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com