Kort introduksjon
Denne bloggen sammenligner hovedsakelig serialiserings- og deserialiseringsytelsen til Xml, Json, Hessian og Protocol Buffers, og ser bort fra de grunnleggende konseptene i Xml og Json. Hessian: Hessian er et lettvekts fjern-onhttp-verktøy som tilbyr RMI-funksjonalitet ved bruk av den binære RPC-protokollen og innebygde serialiseringsmuligheter. Protokollbuffere: Et format for datautveksling fra Google, som er språkuavhengig, og siden det er et binærformat, er det mye raskere enn å bruke XML for datautveksling, og kan brukes til datakommunikasjon mellom distribuerte applikasjoner eller datautveksling i heterogene miljøer. Som et effektivt og kompatibelt binært dataoverføringsformat kan det brukes i mange felt som nettverksoverføring, konfigurasjonsfiler, datalagring osv. Google tilbyr Java-, C++- og Python-implementasjoner, og nå finnes det implementasjoner av språk som C# på Internett.
Serialisering og deserialisering
XML: Bruk XmlSerializer som følger med .Net. Json: Den bruker ServiceStack.Text, som er mer ytelseskraftig enn Newtonsoft.Json, men den raskeste bør være fastJSON.net. Hessian: Bruker HessianCSharp-biblioteket, lastet ned fra nuget. Protokollbuffere: Ved bruk av protobuf-net, lastet ned fra nuget. Følgende er enhetene som brukes i testen.
i7HQ 2.6HZ-prosessoren brukt i testmaskinen. Her er resultatene av testen Serialisering
Deserialisering
Bytelengde etter serialisering
La oss snakke om serialisering først, her testes den med henholdsvis 100 ganger, 1000 ganger, 10000 og 100000 ganger, ordinatet er fullføringstiden, enheten er millisekunder, du kan se at når man tester innen 10 000 ganger, er tidsbruken for 4 typer serialisering veldig liten, alle innen 200 millisekunder, etter 10 000 ganger til 100 000 ganger, begynner de alle å vokse, det verste er Xml, det beste er protokollbuffere, men når det er innenfor 10 000 ganger, Hessian er bedre enn Protocol Buffers. Det er ikke stor forskjell innenfor 10 000 deserialiseringer, men ved 10 000 ganger kan vi allerede se at Hessian tar mer tid, og ved 100 000 ganger overgår Hessian direkte Xml, noe som får meg til alltid å tenke at det er et problem med koden min, og at best ytelse fortsatt er protokollbuffere. Den serialiserte bytelengden er forståelig nok den lengste i Xml, fordi filen inneholder mange slutttagger (),</Name> og Protocol Buffers er fortsatt best.
Basert på grafen ovenfor kan vi nesten raskt konkludere med at Protocol Buffers er det beste, men jeg mener vi fortsatt må evaluere det grundig ut fra følgende aspekter: 1. Lesbarhet: Xml og Json er begge tekst etter serialisering, og lesbarheten er veldig god, for eksempel, hvis det er en feil i midten, kan vi enkelt se de utvekslede dataene og til og med simulere dataene for testing; Både Hessian- og Protocol Buffers er binære, og innholdet er uleselig etter serialisering, noe som vil ha en viss innvirkning på feilsøkingen av systemet. 2. Allsidighet: XML og JSON er allerede gamle datautvekslingsformater, og dette er de to formatene for datautveksling mellom generelle systemer. Både Hessian- og Protokollbuffere er relativt upopulære og brukes mindre. 3. Bekvemmelighet: Hessian er faktisk et komplett RPC-rammeverk, definer grensesnittet på serversiden og implementer grensesnittet, kopier grensesnittet til klienten. Etter litt koding kan vi kalle serversiden som å kalle en lokal metode, noe som ikke er tilgjengelig i de tre andre verktøyene, og ytelsen er ikke dårlig.
|