Rövid bevezetés
Ez a blog főként összehasonlítja az Xml, Json, Hessian és Protocol Bufferek serializációs és deserializációs teljesítményét, félretéve az Xml és Json alapvető fogalmait. Hessian: A Hessian egy könnyű távoli onhttp eszköz, amely RMI funkciókat biztosít a bináris RPC protokoll és beépített serializációs képességek segítségével. Protokoll pufferek: A Google adatcserére szolgáló formátum, amely nyelvfüggetlen, és mivel bináris formátum, sokkal gyorsabb, mint az xml adatcserére, és használható elosztott alkalmazások közötti adatkommunikációra vagy heterogén környezetben történő adatcserére. Hatékony és kompatibilis bináris adatátviteli formátumként számos területen használható, például hálózati átvitel, konfigurációs fájlok, adattárolás stb. A Google Java, C++, Python implementációkat kínál, és most már léteznek olyan nyelvek megvalósításai, mint a C# az interneten.
Serializáció és deserializáció
XML: Használd az XmlSerializert, ami a .Net-hez érkezik. Json: A ServiceStack.Text-et használja, ami teljesítményteljesebb, mint a Newtonsoft.Json, de a leggyorsabbnak fastJSON.net kellene lennie. Hessian: A HessianCSharp könyvtár használatával, letöltve a nugetről. Protokoll pufferek: Protobuf-net használatával, letöltve a nuget-ről. Az alábbiakban a tesztben használt entitások találhatók.
A tesztgépben használt i7HQ 2.6HZ processzor. Íme a teszt eredményei Sorozatkészítés
Deserializáció
Bájthossz a serializáció után
Beszéljünk először a serializációról, itt 100-kor, 1000-szer, 10000-szer és 100000-szer teszteljük, az ordinatát a befejezési idő, az egység ezredmásodperc, láthatod, hogy amikor 10000-szer tesztelünk, a 4 típusú sorozatosítás időigénye nagyon kicsi, mind 200 milliszekundon belül, 10000-szer és 100000-es szer után mind növekedni kezdenek, a legrosszabb az Xml, a legjobb a protokoll pufferek, de ha 10000-szer belül van, A Hessian jobb, mint a protokoll pufferek. 10 000 deserializáción belül nincs sok különbség, de 10 000-szer már látjuk, hogy a Hessian időigényesebb, és 100 000-szer esetén közvetlenül meghaladja az Xml-t, ami miatt mindig azt gondolom, hogy a kódommal van probléma, és a legjobb teljesítmény még mindig a Protocol Buffers. A sorializált bájthossz érthető módon a leghosszabb Xml-ben, mert a fájl sok záró címkét tartalmaz (),</Name> és a Protocol Buffers még mindig a legjobb.
A fenti grafikon alapján szinte gyorsan arra a következtetésre juthatunk, hogy a Protokoll Pufferek a legjobb, de úgy gondolom, hogy mégis átfogó értékelésre van szükség a következő szempontok alapján: 1. Olvashatóság: Az Xml és a Json is szöveg a serializáció után, és az olvashatóság nagyon jó, például ha a közepén hiba történik, könnyen megtekinthetjük a cserélt adatokat, sőt, akár szimulálhatjuk is az adatokat teszteléshez; Mind a Hessian, mind a protokoll pufferek binárisak, és a tartalom a serializáció után olvashatatlan, ami bizonyos hatással lesz a rendszer hibakeresésére. 2. Sokoldalúság: Az XML és a JSON már régebbi adatcsere formátumok, és ezek a két formátum az általános rendszerek közötti adatcserére. Mind a Hessian, mind a Protocol pufferek viszonylag népszerűtlenek, és ritkábban használják. 3. Kényelmes: A Hessian valójában egy teljes RPC keretrendszer, definiálja a szerver oldalon az interfészt, valósítja meg azt, másolja az interfészt az ügyfélre. Kis kódolás után a szerver oldalt úgy hívhatjuk, mint egy helyi metódust, ami a másik három eszközben nem elérhető, és a teljesítmény nem rossz.
|