Java objekta serializācijai es vēlos pārbaudīt atšķirību starp JSON izmantošanu un vispārējo serializācijas rīku izmantošanu laika un telpiskās veiktspējas ziņā.
JSON izvēlas izmantot FastJSON.
Serializācijas rīks izmanto Protostuff un Kyro. Kāpēc nelietot protobufu? Jo es uzskatu, ka java klasei ar simtiem esošo īpašību jauna atbilstoša proto faila izveide ir mazliet anti-cilvēks. Protostuff ir uzlabota Protobuf versija, kas ļauj tieši serializēt Java objektu, izmantojot to mazliet līdzīgi kā Kyro, bez tik daudz starpposma procesu kā Protobuf. Citiem, piemēram, Hession, Java ar serializāciju utt., Tiek teikts, ka ir daudz sliktāka veiktspēja nekā Kryo un Protobuf, tāpēc es nezinu, ko sagaidīt.
Pēc vienkārša testa es atklāju, ka plaisa ir diezgan acīmredzama, tāpēc es jutu, ka nav nepieciešams veikt īpašu novērtējumu. Izgrieziet žurnāla rindkopu un nosūtiet to, visi to jūt.
izmaksu laiks ir System.nanoTime(); Visas trīs ir noklusējuma konfigurācijas bez konfigurācijas. Telpas nospiedums pēc serializācijas ir nedaudz mazāks nekā protostuff, un abi ir daudz lielāki nekā JSON. Tas ir viegli saprotams, galu galā, json stīgas ir lasāmas, nepiespiež pārāk daudz. Laiks, kas nepieciešams serializācijai un deserializācijai, ir labāks nekā Kyro pār FastJSON, un atšķirība ir diezgan acīmredzama.
Tātad, noslēgumā, ja nav ārkārtīgi prasīgu prasību attiecībā uz vietu, Protostuff var būt labākā izvēle. Protostuff ir papildu priekšrocība salīdzinājumā ar Kyro, tas ir, ja java klase pievieno laukus pēc serializācijas un pirms deserializācijas (kas ir neizbēgama reālajā biznesā), Kyro būs bezjēdzīgi. Tomēr protostuff var izmantot, ja vien tas tiek pievienots klases beigās un izmanto saules sēriju JDK. Tāpēc, ja serializācija tiek izmantota tādos scenārijos kā kešatmiņa, un serializētais objekts ir jāglabā ilgu laiku, varat izvēlēties tikai protostuff.
Protams, ja ir nepieciešama lasāmība vai kaut kas cits, jūs varat izmantot tikai json.
|