Czy ktoś ma jakieś informacje na temat charakterystyk wydajności buforów protokołów w porównaniu z BSON (binarne JSON) lub ogólnie w porównaniu z JSON?
- Rozmiar przewodu
- Szybkość serializacji
- Szybkość deserializacji
Wydaje się, że są to dobre protokoły binarne do użytku przez HTTP. Zastanawiam się tylko, co byłoby lepsze na dłuższą metę dla środowiska C #.
Oto kilka informacji, które czytałem na temat BSON i buforów protokołów .
c#
json
comparison
protocol-buffers
bson
Jeff Meatball Yang
źródło
źródło
Odpowiedzi:
Oszczędność jest również inną alternatywą podobną do buforów protokołów.
Społeczność Java opracowała dobre testy porównawcze dotyczące serializacji / deserializacji i rozmiaru przewodów tych technologii: https://github.com/eishay/jvm-serializers/wiki
Ogólnie rzecz biorąc, JSON ma nieco większy rozmiar drutu i nieco gorszy DeSer, ale wygrywa w wszechobecności i możliwości łatwej interpretacji bez źródła IDL. Ostatnia kwestia to coś, co Apache Avro próbuje rozwiązać i bije oba pod względem wydajności.
Firma Microsoft wydała pakiet NuGet dla języka C # Microsoft.Hadoop.Avro .
źródło
Ten post porównuje prędkości i rozmiary serializacji w .NET, w tym JSON, BSON i XML.
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
źródło
Oto kilka ostatnich testów porównawczych pokazujących wydajność popularnych serializatorów .NET.
Te odniesienia Spalanie Zakonnicy wykazują działanie szeregowania prosty poco podczas gdy kompleksowe Northwind benchmarki pokazują, połączonych wyników szeregowania wiersz w każdym zbiorze tabeli Northwind Microsoft.
Zasadniczo bufory protokołów ( protobuf-net ) są około 7x szybsze niż najszybszy Serializer biblioteki klasy bazowej w .NET (XML DataContractSerializer). Jest również mniejszy od konkurencji, ponieważ jest 2,2 razy mniejszy niż najbardziej kompaktowy format serializacji Microsoftu (JsonDataContractSerializer).
Serializatory tekstu usługi ServiceStack są najbardziej zbliżone do wydajności binarnej protobuf-net, w której jej serializator Json jest tylko 2,58 razy wolniejszy niż protobuf-net.
źródło
bufory protokołów są przeznaczone dla przewodów:
JSON to tylko tekst i należy go przeanalizować . wskazówka: zakodowanie „miliarda” int w to zajmie całkiem sporo znaków: Miliard = 12 znaków (długa skala), binarnie mieści się w uint32_t A co z próbą zakodowania double? to byłoby O DUŻO gorsze.
źródło
the wire
oznacza tylko sieć. Teraz, kiedy używamy tak wielu sieci bezprzewodowych, może to zabrzmieć dziwnie.