Za serializacijo Java objektov bi rad preizkusil razliko med uporabo JSON in uporabo splošnih orodij za serializacijo glede časovne in prostorske zmogljivosti.
json se odloči za uporabo fastjson.
Orodje za serializacijo uporablja Protostuff in Kyro. Zakaj ne uporabiš protobufa? Ker menim, da je za java razred s stotinami obstoječih lastnosti ustvarjanje nove ujemajoče proto datoteke nekoliko protičloveško. Protostuff je izboljšana različica Protobufa, ki omogoča neposredno serializacijo Java objekta, z uporabo podobno kot Kyro, brez toliko vmesnih procesov kot Protobuf. Druge, kot so Hession, Java s serializacijo itd., naj bi imele veliko slabšo zmogljivost kot Kryo in Protobuf, zato ne vem, kaj pričakovati.
Po preprostem testu sem ugotovil, da je vrzel precej očitna, zato sem menil, da ni potrebe po posebni oceni. Izrežite odstavek dnevnika in ga pošljite naprej, vsi to začutijo.
cost time je System.nanoTime(); Vse tri so privzete konfiguracije brez kakršnekoli konfiguracije. Prostorska odmera po serializaciji je nekoliko manjša kot pri protostuffu, oba pa sta precej večja kot pri JSON-u. To je enostavno razumeti, saj so json nizi berljivi, ne silite preveč. Čas, potreben za serializacijo in deserializacijo, je boljši kot pri Kyro v primerjavi s FastJSON, razlika pa je precej očitna.
Torej, za zaključek, če ni izjemno zahtevnih prostorskih zahtev, je Protostuff morda najboljša možnost. Protostuff ima dodatno prednost pred Kyro, in sicer, če razred Java doda polja po serializaciji in pred deserializacijo (kar je v resničnem poslovanju neizogibno), bo Kyro neuporaben. Vendar pa se protostuff lahko uporablja, dokler je dodan na koncu tečaja in uporablja serijo sun JDK. Zato, če se serializacija uporablja v scenarijih, kot je predpomnilnik, in je treba serializirani objekt shranjevati dalj časa, lahko izberete le protostuff.
Seveda, če je potrebna berljivost ali kaj podobnega, lahko uporabljaš samo json.
|