Krótkie wprowadzenie
Ten blog głównie porównuje wydajność serializacji i deserializacji Xml, JSON, Hessiana oraz protokołu, pomijając podstawowe koncepcje XML i JSON. Hessian: Hessian to lekkie narzędzie do oddalania na http, które zapewnia funkcjonalność RMI z wykorzystaniem binarnego protokołu RPC oraz wbudowane możliwości serializacji. protokołu: Format wymiany danych z Google, niezależny od języka, a ponieważ jest formatem binarnym, jest znacznie szybszy niż XML do wymiany danych i może być używany do komunikacji danych między aplikacjami rozproszonymi lub wymiany danych w heterogenicznych środowiskach. Jako wydajny i kompatybilny format transmisji danych binarnych, może być używany w wielu dziedzinach, takich jak transmisja sieciowa, pliki konfiguracyjne, przechowywanie danych itp. Google oferuje implementacje Java, C++, Pythona, a obecnie w Internecie dostępne są implementacje języków takich jak C#.
Serializacja i deserializacja
XML: Użyj XmlSerializer, który jest dołączony do .Net. Json: Używa ServiceStack.Text, który jest wydajniejszy niż Newtonsoft.json, ale najszybszy powinien być fastJSON.net. Hessian: Korzystając z biblioteki HessianCSharp, pobranej z nuget. protokołu: Używając protobuf-net, pobrane z nuget. Poniżej przedstawiono jednostki używane w teście.
Procesor i7HQ 2.6HZ używany w maszynie testowej. Oto wyniki testu Serializacja
Deserializacja
Długość bajtu po serializacji
Porozmawiajmy najpierw o serializacji, tutaj testuje się ją odpowiednio 100 razy, 1000 razy, 10000 razy i 100000 razy, oordynat to czas zakończenia, jednostka to milisekundy, widać, że przy testach z dokładnością do 10000 razy zużycie czasu 4 rodzajów serializacji jest bardzo małe, wszystkie w ciągu 200 milisekund, po 10000 razach, do 100000 razy, wszystkie zaczynają rosnąć, najgorszy jest XML, najlepszy to protokołu, ale gdy jest w granicach 10000 razy, Hessian jest lepszy niż Protocol Buffers. Różnica w 10 000 deserializacji nie jest duża, ale przy 10 000 razy już widzimy, że Hessian zajmuje więcej czasu, a przy 100 000 razy Hessian bezpośrednio przewyższa Xml, co sprawia, że zawsze myślę, iż jest problem z moim kodem, a najlepszą wydajność nadal dają Protocol Buffers. Długość bajtów serializowanych jest zrozumiale najdłuższa w Xml, ponieważ plik zawiera wiele tagów końcowych (),</Name> a Protocol Buffers nadal jest najlepszy.
Na podstawie powyższego wykresu możemy niemal szybko stwierdzić, że Protocol Buffers jest najlepszy, ale myślę, że wciąż musimy go kompleksowo ocenić z następujących aspektów: 1. Czytelność: XML i Json to zarówno teksty po serializacji, a czytelność jest bardzo dobra, na przykład jeśli popełnimy błąd pośredni, możemy łatwo zobaczyć wymienione dane, a nawet je symulować do testowania; Zarówno Hessiana, jak i protokołu są binarne, a zawartość jest nieczytelna po serializacji, co będzie miało pewien wpływ na rozwiązywanie problemów systemu. 2. Wszechstronność: XML i JSON to już stare formaty wymiany danych i są to dwa formaty wymiany danych między systemami ogólnymi. Zarówno Hessiana, jak i protokołu są stosunkowo niepopularne i rzadziej używane. 3. Wygoda: Hessian to w rzeczywistości kompletny framework RPC, definiuj interfejs po stronie serwera i implementuj interfejs, kopiuj interfejs do klienta. Po niewielkim kodowaniu możemy wywołać stronę serwera jak wywoływanie metody lokalnej, co nie jest dostępne w pozostałych trzech narzędziach, a wydajność nie jest zła.
|