Pergunta

Alguém tem alguma informação sobre as características do Protocol Buffers contra BSON (JSON binário) de desempenho ou contra JSON em geral?

  • O tamanho do fio
  • velocidade de serialização
  • velocidade Deserialization

Estas parecem ser bons protocolos binários para uso através de HTTP. Eu só estou querendo saber o que seria melhor a longo prazo para um ambiente C #.

Veja aqui algumas informações que eu estava lendo em BSON e Protocol buffers .

Foi útil?

Solução

Thrift é outro Buffers-como protocolo alternativo também.

Há boas referências da comunidade Java na serialização / desserialização e tamanho do fio dessas tecnologias: https://github.com/eishay/jvm-serializers/wiki

Em geral, JSON tem tamanho ligeiramente maior de arame e um pouco pior deser, mas vitórias em onipresença ea capacidade de interpretá-lo facilmente, sem a fonte IDL. O último ponto é algo que Apache Avro está tentando resolver, e ele bate tanto em termos de desempenho.

A Microsoft lançou um pacote de C # NuGet Microsoft.Hadoop.Avro ?? .

Outras dicas

Este pós compara velocidades de serialização e tamanhos em .NET, incluindo JSON, BSON e XML.

text alt

text alt

http: //james.newtonking .com / Arquivo / 2010/01/01 / net-serialização desempenho-comparison.aspx

Aqui estão alguns benchmarks recentes mostrando o desempenho dos populares .NET Serializers.

O queima Monks benchmarks mostrar o desempenho de serialização de um simples POCO enquanto o abrangente Adamastor benchmarks mostrar os resultados combinados de serialização de uma linha em cada mesa de Adamastor conjunto de dados da Microsoft.

enter descrição da imagem aqui

Basicamente buffers de protocolo ( Protobuf-líquido) é de cerca de mais rápido do que a biblioteca mais rápido base de classe Serializer em .NET (XML DataContractSerializer). Seu também menor do que a concorrência, como também é 2,2x menor do que Microsofts formato de serialização mais compacto (JsonDataContractSerializer).

serializers texto de ServiceStack são o mais próximo de igualar o desempenho do protobuf-net binária onde o seu Json Serializer só é 2.58x mais lento do que protobuf-net.

buffers de protocolo é concebido para o fio:

  1. tamanho muito pequeno mensagem -. Um aspecto é muito eficiente representação de número inteiro de tamanho variável
  2. Muito rápido decodificação -. Que é um protocolo binário
  3. protobuf gera C ++ super eficiente para codificar e decodificar as mensagens - dica:. Se você codificar todas as var-inteiros ou itens de tamanhos estáticos em que ele vai codificar e decodificar em velocidade determinista
  4. Oferece um modelo de dados muito rico -. Codificação eficiente estruturas de dados muito complexos

JSON é apenas texto e ele precisa ser analisado . dica: que codifica uma "bilhões" int em que seria necessário um monte de personagens: (escala longa) Billion = 12 do char, em binário ele se encaixa em um uint32_t Agora, o que sobre a tentativa de codificar um duplo? que seria muito muito pior.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top