Alguém tem alguma informação sobre as características de desempenho dos Buffers de protocolo versus BSON (JSON binário) ou JSON em geral?
- Tamanho do fio
- Velocidade de serialização
- Velocidade de desserialização
Estes parecem bons protocolos binários para uso em HTTP. Só estou me perguntando o que seria melhor a longo prazo para um ambiente C #.
Aqui estão algumas informações que eu estava lendo sobre BSON e buffers de protocolo .
c#
json
comparison
protocol-buffers
bson
Jeff Meatball Yang
fonte
fonte
Respostas:
Thrift também é outra alternativa semelhante a Buffers de protocolo.
Existem bons benchmarks da comunidade Java sobre serialização / desserialização e tamanho do fio dessas tecnologias: https://github.com/eishay/jvm-serializers/wiki
Em geral, JSON tem tamanho de fio ligeiramente maior e DeSer um pouco pior, mas vence em onipresença e na capacidade de interpretá-lo facilmente sem o IDL de origem. O último ponto é algo que o Apache Avro está tentando resolver e supera ambos em termos de desempenho.
A Microsoft lançou um pacote C # NuGet Microsoft.Hadoop.Avro .
fonte
Esta postagem compara velocidades e tamanhos de serialização em .NET, incluindo JSON, BSON e XML.
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
fonte
Aqui estão alguns benchmarks recentes mostram o desempenho de serializadores .NET populares.
Os benchmarks do Burning Monks mostram o desempenho da serialização de um POCO simples, enquanto os benchmarks abrangentes do Northwind mostram os resultados combinados da serialização de uma linha em cada tabela do conjunto de dados Northwind da Microsoft.
Basicamente, os buffers de protocolo ( protobuf-net ) são cerca de 7 vezes mais rápidos do que a biblioteca de classes base Serializer mais rápida em .NET (XML DataContractSerializer). Ele também é menor do que a concorrência, pois também é 2,2x menor do que o formato de serialização mais compacto da Microsoft (JsonDataContractSerializer).
Os serializadores de texto do ServiceStack são os que mais se aproximam do desempenho do protobuf-net binário, onde seu serializador Json é apenas 2,58x mais lento do que o protobuf-net.
fonte
buffers de protocolo são projetados para o fio:
JSON é apenas texto e precisa ser analisado . dica: codificar um "bilhão" int nele levaria muitos caracteres: Bilhões = 12 caracteres (escala longa), em binário cabe em um uint32_t Agora, que tal tentar codificar um duplo? isso seria MUITO pior.
fonte
the wire
significa apenas rede. Agora, quando usamos tantas redes sem fio, pode parecer estranho.