Korte introductie
Deze blog vergelijkt voornamelijk de serialisatie- en deserialisatieprestaties van Xml, Json, Hessian en Protocol Buffers, waarbij de basisconcepten van Xml en Json worden buitengesloten. Hessian: Hessian is een lichtgewicht ontkoppelingstool op http die RMI-functionaliteit biedt met behulp van het binaire RPC-protocol en ingebouwde serialisatiemogelijkheden. Protocol Buffers: Een formaat voor gegevensuitwisseling van Google, dat taalonafhankelijk is, en omdat het een binair formaat is, is het veel sneller dan het gebruik van xml voor gegevensuitwisseling, en kan het worden gebruikt voor datacommunicatie tussen gedistribueerde applicaties of data-uitwisseling in heterogene omgevingen. Als een efficiënt en compatibel binair datatransmissieformaat kan het in veel gebieden worden gebruikt, zoals netwerktransmissie, configuratiebestanden, gegevensopslag, enzovoort. Google biedt Java-, C++- en Python-implementaties, en nu zijn er implementaties van talen zoals C# op het internet.
Serialisatie en deserialisatie
XML: Gebruik de XmlSerializer die bij .Net wordt geleverd. Json: Het gebruikt ServiceStack.Text, dat beter presteert dan Newtonsoft.Json, maar het snelste zou fastJSON.net moeten zijn. Hessian: Gebruik de HessianCSharp-bibliotheek, gedownload van nuget. Protocol Buffers: Met protobuf-net, gedownload van nuget. De volgende entiteiten zijn gebruikt in de test.
De i7HQ 2.6HZ-processor die in de testmachine wordt gebruikt. Hier zijn de resultaten van de test Serialisatie
Deserialisatie
Bytelengte na serialisatie
Laten we het eerst over serialisatie hebben, hier wordt het getest met respectievelijk 100 keer, 1000 keer, 10000 en 100.000 keer, de ordinaat is de voltooiingstijd, de eenheid is milliseconden, je ziet dat bij testen binnen 10.000 keer de tijdsopname van 4 soorten serialisatie erg klein is, allemaal binnen 200 milliseconden, na 10.000 keer tot 100.000 keer beginnen ze allemaal te groeien, het slechtste is Xml, het beste is Protocol Buffers, maar als het binnen 10000 keer is, Hessian is beter dan Protocol Buffers. Er is niet veel verschil binnen 10.000 deserialisaties, maar bij 10.000 keer zien we al dat Hessian tijdrovender is, en bij 100.000 keer is Hessian direct hoger dan Xml, wat mij altijd doet denken dat er een probleem is met mijn code, en de beste prestaties zijn nog steeds Protocol Buffers. De geserialiseerde bytelengte is begrijpelijkerwijs de langste in Xml, omdat het bestand veel eindtags bevat (),</Name> en Protocol Buffers nog steeds het beste is.
Op basis van de bovenstaande grafiek kunnen we bijna snel concluderen dat Protocol Buffers het beste is, maar ik denk dat we het nog steeds volledig moeten evalueren vanuit de volgende aspecten: 1. Leesbaarheid: Xml en Json zijn beide tekst na serialisatie, en de leesbaarheid is erg goed, bijvoorbeeld als er een fout in het midden zit, kunnen we gemakkelijk de uitgewisselde data bekijken en zelfs de data simuleren om te testen; Zowel Hessian- als Protocol Buffers zijn binair, en de inhoud is onleesbaar na serialisatie, wat een zekere invloed zal hebben op de probleemoplossing van het systeem. 2. Veelzijdigheid: XML en JSON zijn al oude data-uitwisselingsformaten, en dit zijn de twee formaten voor gegevensuitwisseling tussen algemene systemen. Zowel Hessian- als Protocolbuffers zijn relatief impopulair en worden minder gebruikt. 3. Gemak: Hessian is eigenlijk een compleet RPC-framework, definieer de interface aan de serverzijde en implementeer de interface, kopieer de interface naar de client. Na een kleine hoeveelheid programmeren kunnen we de serverzijde aanroepen zoals een lokale methode aanroepen, wat niet beschikbaar is in de andere drie tools, en de prestaties zijn niet slecht.
|