Kort introduktion
Denne blog sammenligner primært serialiserings- og deserialiseringspræstationen for Xml, Json, Hessian og Protocol Buffers, og ser bort fra de grundlæggende begreber i Xml og Json. Hessian: Hessian er et letvægts fjernbetjeningsværktøj på http, der leverer RMI-funktionalitet ved hjælp af den binære RPC-protokol og indbyggede serialiseringsmuligheder. Protokolbuffere: Et format til dataudveksling fra Google, som er sproguafhængigt, og fordi det er et binært format, er det meget hurtigere end at bruge XML til dataudveksling og kan bruges til datakommunikation mellem distribuerede applikationer eller dataudveksling i heterogene miljøer. Som et effektivt og kompatibelt binært datatransmissionsformat kan det bruges inden for mange områder såsom netværkstransmission, konfigurationsfiler, datalagring osv. Google tilbyder Java-, C++- og Python-implementeringer, og nu findes der implementeringer af sprog som C# på internettet.
Serialisering og deserialisering
XML: Brug XmlSerializer, der følger med .Net. Json: Den bruger ServiceStack.Text, som er mere ydmygende end Newtonsoft.Json, men den hurtigste burde være fastJSON.net. Hessian: Ved at bruge HessianCSharp-biblioteket, downloadet fra nuget. Protokolbuffere: Ved brug af protobuf-net, downloadet fra nuget. Følgende er de enheder, der bruges i testen.
i7HQ 2.6HZ-processoren, der bruges i testmaskinen. Her er resultaterne af testen Serialisering
Deserialisering
Bytelængde efter serialisering
Lad os først tale om serialisering, her testes den med henholdsvis 100 gange, 1000 gange, 10000 og 100000 gange, ordinatet er færdiggørelsestiden, enheden er millisekunder, du kan se, at når man tester inden for 10000 gange, er tidsforbruget for 4 typer serialisering meget lille, alle inden for 200 millisekunder, fra 10.000 til 100.000 gange begynder de alle at vokse, det værste er Xml, det bedste er protokolbuffere, men når det er inden for 10.000 gange, Hessian er bedre end Protocol Buffers. Der er ikke den store forskel inden for 10.000 deserialiseringer, men ved 10.000 gange kan vi allerede se, at Hessian er mere tidskrævende, og ved 100.000 gange overstiger Hessian direkte Xml, hvilket får mig altid til at tænke, at der er et problem med min kode, og den bedste ydeevne er stadig Protocol Buffers. Den serialiserede bytelængde er forståeligt nok den længste i Xml, fordi filen indeholder mange sluttags (),</Name> og Protocol Buffers er stadig den bedste.
Baseret på grafen ovenfor kan vi næsten hurtigt konkludere, at Protocol Buffers er det bedste, men jeg mener stadig, vi skal evaluere det grundigt ud fra følgende aspekter: 1. Læsbarhed: Xml og Json er begge tekst efter serialisering, og læsbarheden er meget god, for eksempel hvis der er en fejl i midten, kan vi nemt se de udvekslede data og endda simulere dataene for at teste; Både Hessian- og Protocol Buffers er binære, og indholdet er ulæseligt efter serialisering, hvilket vil have en vis indvirkning på fejlfinding af systemet. 2. Alsidighed: XML og JSON er allerede gamle dataudvekslingsformater, og disse er de to formater for dataudveksling mellem generelle systemer. Både Hessian- og Protocol-buffere er relativt upopulære og bruges mindre. 3. Bekvemmelighed: Hessian er faktisk et komplet RPC-framework, definer interfacet på serversiden og implementerer interfacet, kopier interfacet til klienten. Efter lidt kodning kan vi kalde serversiden som at kalde en lokal metode, hvilket ikke er tilgængeligt i de andre tre værktøjer, og ydeevnen er ikke dårlig.
|