Kort introduktion
Denna blogg jämför främst serialiserings- och deserialiseringsprestandan för Xml, Json, Hessian och protokollbuffertar, och lämnar de grundläggande begreppen Xml och Json åt sidan. Hessian: Hessian är ett lättviktigt fjärrstyrningsverktyg på http som tillhandahåller RMI-funktionalitet med hjälp av det binära RPC-protokollet och inbyggda serialiseringsfunktioner. Protokollbuffertar: Ett format för datautbyte från Google, som är språkoberoende och eftersom det är ett binärt format är det mycket snabbare än att använda xml för datautbyte, och kan användas för datakommunikation mellan distribuerade applikationer eller datautbyte i heterogena miljöer. Som ett effektivt och kompatibelt format för binär dataöverföring kan det användas inom många områden såsom nätverksöverföring, konfigurationsfiler, datalagring med mera. Google tillhandahåller Java-, C++- och Python-implementationer, och nu finns det implementationer av språk som C# på Internet.
Serialisering och deserialisering
XML: Använd XmlSerializern som följer med .Net. Json: Den använder ServiceStack.Text, som är mer prestandaeffektiv än Newtonsoft.Json, men den snabbaste bör vara fastJSON.net. Hessian: Använder HessianCSharp-biblioteket, nedladdat från nuget. Protokollbuffertar: Använder protobuf-net, nedladdat från nuget. Följande är de entiteter som används i testet.
i7HQ 2.6HZ-processorn som används i testmaskinen. Här är testresultaten Serialisering
Deserialisering
Bytelängd efter serialisering
Låt oss prata om serialisering först, här testas den med 100 gånger, 1000 gånger, 10 000 och 100 000 gånger respektive, ordinaten är slutförandetiden, enheten är millisekunder, du kan se att när man testar inom 10 000 gånger är tidsåtgången för 4 typer av serialisering mycket liten, alla inom 200 millisekunder, efter 10 000 gånger till 100 000 gånger, de börjar alla växa, det värsta är Xml, det bästa är protokollbuffertar, men när det är inom 10 000 gånger, Hessian är bättre än protokollbuffertar. Det är inte så stor skillnad inom 10 000 deserialiseringar, men vid 10 000 gånger kan vi redan se att Hessian är mer tidskrävande, och vid 100 000 gånger överstiger Hessian direkt Xml, vilket får mig alltid att tro att det är ett problem med min kod, och den bästa prestandan är fortfarande protokollbuffertar. Den serialiserade bytelängden är förståeligt nog den längsta i Xml, eftersom filen innehåller många sluttaggar (),</Name> och Protocol Buffers är fortfarande bäst.
Baserat på grafen ovan kan vi nästan snabbt dra slutsatsen att Protocol Buffers är bäst, men jag tror att vi ändå behöver utvärdera den heltäckande från följande aspekter: 1. Läsbarhet: Xml och Json är båda text efter serialisering, och läsbarheten är mycket god, till exempel om det finns ett fel i mitten kan vi enkelt se den utbytta datan och till och med simulera datan för att testa; Både Hessian- och protokollbuffertar är binära, och innehållet är oläsbart efter serialisering, vilket kommer att ha en viss påverkan på systemets felsökning. 2. Mångsidighet: XML och JSON är redan gamla datautväxlingsformat, och dessa är de två formaten för datautbyte mellan allmänna system. Både Hessian- och Protokollbuffertar är relativt impopulära och används mindre. 3. Bekvämlighet: Hessian är faktiskt ett komplett RPC-ramverk, definiera gränssnittet på serversidan och implementera gränssnittet, kopiera gränssnittet till klienten. Efter lite kodning kan vi anropa serversidan som att anropa en lokal metod, vilket inte finns i de andra tre verktygen, och prestandan är inte dålig.
|