Java-objektin serialisointiin haluaisin testata eroa JSONin ja yleisten serialisointityökalujen välillä ajallisen ja spatiaalisen suorituskyvyn kannalta.
json valitsee käyttää fastjsonia.
Sarjoittamistyökalu käyttää Protostuffia ja Kyroa. Miksi et käyttäisi protobufia? Koska koen, että java-luokalle, jolla on satoja olemassa olevia ominaisuuksia, uuden vastaavan proto-tiedoston luominen on vähän epäinhimillistä. Protostuff on parannettu versio Protobufista, joka mahdollistaa Java-objektin suoran sarjallistamisen, käyttäen sitä vähän kuin Kyroa, ilman yhtä paljon väliprosesseja kuin Protobuf. Toiset, kuten Hession, Java sarjoituksilla jne., sanotaan olevan paljon huonompi suorituskyky kuin Kryo ja Protobuf, joten en tiedä mitä odottaa.
Yksinkertaisen testin jälkeen huomasin, että aukko oli melko ilmeinen, joten koin, ettei tarvetta tehdä erityistä arviointia. Leikkaa lokikirjasta kappale ja lähetä se, kaikki tuntevat sen.
kustannusaika on System.nanoTime(); Kaikki kolme ovat oletusasetuksia ilman mitään asetuksia. Tilan jalankäyttö sarjallistamisen jälkeen on hieman pienempi kuin protomateriaalissa, ja molemmat ovat paljon suurempia kuin JSON:ssa. Tämä on helppo ymmärtää, loppujen lopuksi json-merkkijonot ovat luettavia, älä pakota liikaa. Sarjoittamiseen ja deserialisointiin vaadittava aika on parempi kuin Kyron FastJSONiin, ja ero on selvä.
Yhteenvetona, jos tilavaatimuksia ei ole, Protostuff voi olla paras valinta. Protostuffilla on lisäetu Kyroon nähden, eli jos java-luokka lisää kenttiä serialisaation jälkeen ja ennen deserialisointia (mikä on väistämätöntä oikeassa liiketoiminnassa), Kyro on hyödytön. Protostuffia voi kuitenkin käyttää, kunhan se lisätään luokan lopussa ja käyttää Sun-sarjaa JDK. Siksi, jos sarjoittamista käytetään esimerkiksi välimuistissa ja sarjallinen olio täytyy säilyttää pitkään, voit valita vain protostuffin.
Tietenkin, jos on tarve luettavuudelle tai vastaavalle, voit käyttää vain jsonia.
|