Scurtă introducere
Acest blog compară în principal performanța serializării și deserializării pentru XML, Json, Hessian și Protocol Buffers, lăsând la o parte conceptele de bază de Xml și Json. Hessian: Hessian este un instrument ușor de remot onhttp care oferă funcționalitate RMI folosind protocolul binar RPC și capabilități integrate de serializare. Protocol Buffers: Un format pentru schimbul de date de la Google, care este independent de limbaj și, fiind un format binar, este mult mai rapid decât utilizarea XML pentru schimbul de date și poate fi folosit pentru comunicarea datelor între aplicații distribuite sau pentru schimbul de date în medii eterogene. Ca format eficient și compatibil de transmisie binară a datelor, poate fi folosit în multe domenii precum transmisia în rețea, fișiere de configurare, stocarea datelor etc. Google oferă implementări în Java, C++, Python, iar acum există implementări ale unor limbaje precum C# pe Internet.
Serializare și deserializare
XML: Folosește XmlSerializer care vine cu .Net. Json: Folosește ServiceStack.Text, care este mai performant decât Newtonsoft.Json, dar cel mai rapid ar trebui să fie fastJSON.net. Hessian: Folosind biblioteca HessianCSharp, descărcată din nuget. Protocol Buffers: Folosind protobuf-net, descărcat de pe nuget. Următoarele sunt entitățile folosite în test.
Procesorul i7HQ de 2,6Hz folosit în mașina de testare. Iată rezultatele testului Serializare
Deserializare
Lungimea octeților după serializare
Să vorbim mai întâi despre serializare, aici este testată de 100 de ori, 1000 de ori, 10000 de ori și respectiv 100000 de ori, coordonata este timpul de finalizare, unitatea este milisecunde, poți vedea că atunci când testezi în 10000 de ori, consumul de timp al 4 tipuri de serializare este foarte mic, toate în 200 de milisecunde, după 10000 de ori, până la 100000 de ori, toate încep să crească, cel mai rău este Xml, cel mai bun este Protocol Buffers, dar când este în interiorul a 10000 de ori, Hessian este mai bun decât Protocol Buffers. Nu există o diferență mare în cadrul a 10.000 de deserializări, dar la 10.000 de ori putem vedea deja că Hessian este mai consumator de timp, iar la 100.000 de ori, Hessian depășește direct Xml, ceea ce mă face mereu să cred că există o problemă cu codul meu, iar cea mai bună performanță rămâne Protocol Buffers. Lungimea octetului serializat este, pe bună dreptate, cea mai lungă în Xml, deoarece fișierul conține multe etichete de final (),</Name> iar Protocol Buffers rămâne cel mai bun.
Pe baza graficului de mai sus, putem concluziona aproape rapid că Protocol Buffers este cel mai bun, dar cred că trebuie totuși să-l evaluăm cuprinzător din următoarele aspecte: 1. Lizibilitate: Xml și Json sunt ambele text după serializare, iar lizibilitatea este foarte bună; de exemplu, dacă există o greșeală la mijloc, putem vizualiza ușor datele schimbate și chiar să simulăm datele pentru testare; Atât bufferele Hessiene, cât și cele de protocol sunt binare, iar conținutul este ilizibil după serializare, ceea ce va avea un anumit impact asupra depanării sistemului. 2. Versatilitate: XML și JSON sunt deja formate vechi de schimb de date, iar acestea sunt cele două formate pentru schimbul de date între sisteme generale. Atât bufferul Hessian, cât și cel de protocol sunt relativ nepopulari și sunt folosiți mai rar. 3. Comoditate: Hessian este de fapt un cadru complet RPC, definește interfața pe partea de server și implementează interfața, copiază interfața către client După o mică cantitate de programare, putem chema partea serverului ca și cum ar fi apelat o metodă locală, ceea ce nu este disponibil în celelalte trei unelte, iar performanța nu este rea.
|