Protocolo Buffers vs JSON ou BSON
-
18-09-2019 - |
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 .
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.
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.
Basicamente buffers de protocolo ( Protobuf-líquido) é de cerca de
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:
- tamanho muito pequeno mensagem -. Um aspecto é muito eficiente representação de número inteiro de tamanho variável
- Muito rápido decodificação -. Que é um protocolo binário
- 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 ??li>
- 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.