Kratek uvod
Ta blog večinoma primerja zmogljivost serializacije in deserializacije Xml, JSON, Hessiana in protokolnih medpomnilnikov, pri čemer izpusti osnovne koncepte XML in JSON. Hessian: Hessian je lahko orodje za daljinsko oddaljevanje na http, ki omogoča RMI funkcionalnost z uporabo binarnega RPC protokola in vgrajene zmožnosti serializacije. Protokolni medpomnilniki: Format za izmenjavo podatkov iz Googla, ki je neodvisen od jezika, in ker je binarni format, je veliko hitrejši od uporabe xml za izmenjavo podatkov ter se lahko uporablja za komunikacijo podatkov med porazdeljenimi aplikacijami ali izmenjavo podatkov v heterogenih okoljih. Kot učinkovit in združljiv binarni format za prenos podatkov se lahko uporablja na številnih področjih, kot so omrežni prenos, konfiguracijske datoteke, shranjevanje podatkov itd. Google ponuja implementacije za Javo, C++, Python, zdaj pa obstajajo tudi implementacije jezikov, kot je C#, na internetu.
Serializacija in deserializacija
XML: Uporabite XmlSerializer, ki je priložen .Net. Json: Uporablja ServiceStack.Text, ki je bolj zmogljiv kot Newtonsoft.json, vendar bi moral biti najhitrejši fastJSON.net. Hessian: Uporaba knjižnice HessianCSharp, prenesena iz nugeta. Protokolni medpomnilniki: Uporaba protobuf-net, prenesen iz nugeta. Naslednje so entitete, uporabljene v testu.
Procesor i7HQ 2,6Hz, uporabljen v testni napravi. Tukaj so rezultati testa Serializacija
Deserializacija
Dolžina bajta po serializaciji
Najprej govorimo o serijalizaciji, tukaj se testira s 100-krat, 1000-krat, 10000-krat in 100000-krat, ordinata je čas dokončanja, enota je milisekunde, lahko vidite, da je pri testiranju znotraj 10000-krat poraba časa pri štirih vrstah serializacije zelo majhna, vse znotraj 200 milisekund, po 10000-krat do 100000-krat, vse začnejo rasti, najslabše je Xml, najboljše so protokolni medpomnilniki, vendar ko je znotraj 10000-krat, Hessian je boljši od Protocol Buffers. Pri 10.000 deserializacijah ni velike razlike, a pri 10.000-krat že vidimo, da je Hessian bolj časovno zahteven, pri 100.000-krat pa Hessian neposredno presega XML, kar me vedno prepričuje, da je težava z mojo kodo, in da je najboljša zmogljivost še vedno v protokolnih medpomnilnikih. Serializirana dolžina bajta je razumljivo najdaljša v XML, saj datoteka vsebuje veliko končnih oznak (),</Name> Protocol Buffers pa je še vedno najboljši.
Na podlagi zgornjega grafa lahko skoraj hitro zaključimo, da je Protocol Buffers najboljši, vendar menim, da ga moramo vseeno celovito oceniti z naslednjih vidikov: 1. Berljivost: XML in Json sta po serializaciji oba besedilna, berljivost pa je zelo dobra, na primer, če pride do napake vmes, lahko enostavno pregledamo izmenjane podatke in celo simuliramo podatke za testiranje; Tako Hessian kot protokolni medpomnilnik sta binarna, vsebina pa je po serializaciji neberljiva, kar bo imelo določen vpliv na odpravljanje težav v sistemu. 2. Vsestranskost: XML in JSON sta že stara formata za izmenjavo podatkov in to sta dva formata za izmenjavo podatkov med splošnimi sistemi. Tako Hessian kot protokolni medpomnilniki so razmeroma nepriljubljeni in se uporabljajo manj. 3. Priročnost: Hessian je pravzaprav popoln RPC okvir, definiraj vmesnik na strežniški strani in implementiraj vmesnik, kopiraj vmesnik na odjemalca. Po nekaj programiranju lahko strežniško stran kličemo kot lokalno metodo, kar ni na voljo v drugih treh orodjih, zmogljivost pa ni slaba.
|