Egy Java objektum serializálásához szeretném tesztelni a különbséget a JSON és az általános serializációs eszközök használata között az időbeli és térbeli teljesítmény szempontjából.
JSON a fastjson használatát választja.
A serializációs eszköz Protostuffot és Kyro-t használ. Miért ne használnánk Protobufot? Mert úgy érzem, hogy egy több száz meglévő tulajdonsággal rendelkező Java osztálynál egy új megfelelőbb proto fájl létrehozása kissé emberellenes. A Protostuff egy továbbfejlesztett Protobuf verziója, amely lehetővé teszi, hogy közvetlenül serializálj egy Java objektumot, kicsit úgy, mint a Kyro, anélkül, hogy annyi köztes folyamatot kellene igénybe venni, mint a Protobuf. Mások, mint a Hession, a Java sorozatolással stb., azt mondják, sokkal rosszabb teljesítményűek, mint a Kryo és a Protobuf, szóval nem tudom, mire számítsak.
Egy egyszerű teszt után azt tapasztaltam, hogy a hiány elég nyilvánvaló, így úgy éreztem, nincs szükség konkrét értékelésre. Vágj ki egy bekezdést a naplóból, és küldd el, mindenki érzi.
költség-idő System.nanoTime(); Mindhárom alapértelmezett konfiguráció, de nincs semmilyen konfiguráció. A serializáció utáni térterület valamivel alacsonyabb, mint a protostuffé, és mindkettő sokkal nagyobb, mint a JSON-é. Ez könnyen érthető, hiszen a json húrok olvashatók, ne erőltesd túl sokat. A serializáció és deserializáció ideje jobb, mint Kyro-é a FastJSON-nál, és a különbség elég nyilvánvaló.
Összefoglalva, ha nincs rendkívül megterhelő térkövetelmény, a Protostuff lehet a legjobb választás. A Protostuffnak további előnye van Kyro-val szemben, vagyis ha a java osztály a sorozatosítás után és a deserializáció előtt (ami a valódi üzletben elkerülhetetlen) mezőket ad hozzá, akkor a Kyro haszontalan lesz. Azonban a protostuff használható, amennyiben az osztály végén hozzáadják, és a Sun sorozatú JDK-t használják. Ezért, ha olyan helyzetekben használják, mint a gyorsítótár, és a serializált objektumot hosszú ideig kell tárolni, akkor csak protostuff-t választhatsz.
Természetesen, ha olvashatóságra vagy hasonlóra van szükség, csak json-t használhatsz.
|