Stručný úvod
Tento blog porovnáva najmä výkon serializácie a deserializácie Xml, Json, Hessian a Protocol Buffers, pričom základné koncepty Xml a Json nepočítame. Hessian: Hessian je ľahký nástroj na vzdialené pripojenie na http, ktorý poskytuje RMI funkcionalitu pomocou binárneho protokolu RPC a zabudované schopnosti serializácie. Protokolové buffery: Formát na výmenu dát od Google, ktorý je jazykovo nezávislý, a keďže ide o binárny formát, je oveľa rýchlejší ako použitie xml na výmenu dát a môže sa použiť na komunikáciu medzi distribuovanými aplikáciami alebo na výmenu dát v heterogénnych prostrediach. Ako efektívny a kompatibilný binárny formát prenosu dát sa môže použiť v mnohých oblastiach, ako je sieťový prenos, konfiguračné súbory, ukladanie dát a podobne. Google poskytuje implementácie Javy, C++, Pythonu a teraz existujú aj implementácie jazykov ako C# na internete.
Serializácia a deserializácia
XML: Použite XmlSerializer, ktorý je súčasťou .Net. Json: Používa ServiceStack.Text, ktorý je výkonnejší ako Newtonsoft.Json, ale najrýchlejší by mal byť fastJSON.net. Hessian: Používam knižnicu HessianCSharp, stiahnutú z nuget. Protokolové buffery: Používam protobuf-net, stiahnuté z nugetu. Nasledujú entity použité v teste.
Procesor i7HQ 2.6HZ použitý v testovacom stroji. Tu sú výsledky testu Serializácia
Deserializácia
Dĺžka bajtu po serializácii
Najprv sa porozprávajme o serializácii, tu sa testuje s 100-krát, 1000-krát, 10000-krát a 100000-krát, ordinát je čas dokončenia, jednotka sú milisekundy, môžete vidieť, že pri testovaní s presnosťou 10000-krát je časová spotreba 4 druhov serializácie veľmi malá, všetky do 200 milisekúnd, po 10000-krát až po 100000-krát, všetky začnú rásť, najhoršie je Xml, najlepšie sú protokolové buffery, ale keď je to v rámci 10000-krát, Hessian je lepší ako Protocol Buffers. V rámci 10 000 deserializácií nie je veľký rozdiel, ale pri 10 000-krát už vidíme, že Hessian je časovo náročnejší, a pri 100 000-krát Hessian priamo prevyšuje Xml, čo ma vždy vedie k myšlienke, že je problém s mojím kódom, a najlepší výkon sú stále protokolové buffery. Dĺžka serializovaného bajtu je pochopiteľne najdlhšia v Xml, pretože súbor obsahuje veľa koncových tagov (),</Name> a Protocol Buffers je stále najlepší.
Na základe vyššie uvedeného grafu môžeme takmer rýchlo dospieť k záveru, že Protocol Buffers je najlepší, ale myslím si, že ho stále musíme komplexne vyhodnotiť z nasledujúcich aspektov: 1. Čitateľnosť: XML aj Json sú po serializácii textové a čitateľnosť je veľmi dobrá, napríklad ak dôjde k chybe uprostred, môžeme ľahko zobraziť vymieňané dáta a dokonca ich simulovať na testovanie; Hessian aj protokolové buffery sú binárne a obsah je po serializácii nečitateľný, čo má určitý vplyv na riešenie problémov systému. 2. Všestrannosť: XML a JSON sú už staré formáty na výmenu dát a ide o dva formáty pre výmenu dát medzi všeobecnými systémami. Hessian aj protokolové buffery sú relatívne nepopulárne a používajú sa menej. 3. Pohodlie: Hessian je v skutočnosti kompletný RPC framework, definuj rozhranie na serverovej strane a implementuj rozhranie, skopíruj rozhranie klientovi. Po malom kódovaní môžeme serverovú stranu volať lokálnou metódou, čo nie je dostupné v ostatných troch nástrojoch, a výkon nie je zlý.
|