Krátký úvod
Tento blog se především zabývá výkonem serializace a deserializace Xml, Json, Hessian a Protocol Buffers, přičemž opomíjí základní koncepty XML a Json. Hessian: Hessian je lehký nástroj pro vzdálené připojení na http, který poskytuje funkce RMI pomocí binárního protokolu RPC a vestavěné možnosti serializace. Protokolové buffery: Formát pro výměnu dat od Googlu, který je nezávislý na jazyce, a protože je binární, je mnohem rychlejší než použití xml pro výměnu dat a lze jej použít pro komunikaci dat mezi distribuovanými aplikacemi nebo výměnu dat v heterogenních prostředích. Jako efektivní a kompatibilní binární formát přenosu dat lze použít v mnoha oblastech, jako je síťový přenos, konfigurační soubory, ukládání dat atd. Google nabízí implementace Javy, C++, Pythonu a nyní existují implementace jazyků jako C# na internetu.
Serializace a deserializace
XML: Použijte XmlSerializer, který je součástí .Net. Json: Používá ServiceStack.Text, který je výkonnější než Newtonsoft.json, ale nejrychlejší by měl být fastJSON.net. Hessian: Pomocí knihovny HessianCSharp, stažené z nugetu. Protocol Buffers: Používám protobuf-net, stažené z nugetu. Následující entity jsou použity v testu.
Procesor i7HQ 2.6Hz používaný v testovacím stroji. Zde jsou výsledky testu Serializace
Deserializace
Délka bajtu po serializaci
Pojďme si nejprve promluvit o serializaci, zde se testuje s 100krát, 1000krát, 10000krát a 100000krát, ordinát je doba dokončení, jednotka je milisekundy, můžete vidět, že při testování s přesností 10 000krát je časová spotřeba 4 druhů serializace velmi malá, všechny do 200 milisekund, po 10 000krát až po 100 000krát, všechny začínají růst, nejhorší je Xml, nejlepší jsou Protocol Buffers, ale když je to v rámci 10000krát, Hessian je lepší než Protocol Buffers. Rozdíl není velký v rámci 10 000 deserializací, ale při 10 000 násobcích už vidíme, že Hessian je časově náročnější, a při 100 000 násobcích Hessian přímo převyšuje Xml, což mě vždy vede k myšlence, že je problém s mým kódem, a nejlepší výkon jsou stále Protocol Buffers. Délka serializovaného bajtu je pochopitelně nejdelší v Xml, protože soubor obsahuje mnoho koncových tagů (),</Name> a Protocol Buffers je stále nejlepší.
Na základě výše uvedeného grafu můžeme téměř rychle usoudit, že Protocol Buffers je nejlepší, ale myslím, že jej stále musíme komplexně hodnotit z následujících aspektů: 1. Čitelnost: XML i Json jsou po serializaci oba textové a čitelnost je velmi dobrá, například pokud dojde k chybě uprostřed, můžeme snadno zobrazit vyměněná data a dokonce je simulovat k testování; Jak Hessian, tak Protocol Buffers jsou binární a obsah je po serializaci nečitelný, což bude mít určitý dopad na řešení problémů systému. 2. Všestrannost: XML a JSON jsou již staré formáty pro výměnu dat a jedná se o dva formáty pro výměnu dat mezi obecnými systémy. Jak Hessian, tak protokolové buffery jsou poměrně nepopulární a používají se méně. 3. Pohodlí: Hessian je ve skutečnosti kompletní RPC framework, definujte rozhraní na serverové straně a implementujte ho implementací, zkopírujte rozhraní na klienta. Po krátkém množství kódování můžeme serverovou stranu volat jako lokální metodu, což není dostupné v ostatních třech nástrojích, a výkon není špatný.
|