¿Alguien tiene información sobre las características de rendimiento de Protocol Buffers versus BSON (JSON binario) o versus JSON en general?
- Tamaño del cable
- Velocidad de serialización
- Velocidad de deserialización
Estos parecen buenos protocolos binarios para usar sobre HTTP. Me pregunto cuál sería mejor a largo plazo para un entorno C #.
Aquí hay información que estaba leyendo sobre BSON y Protocol Buffers .
c#
json
comparison
protocol-buffers
bson
Jeff Albóndiga Yang
fuente
fuente
Respuestas:
Thrift es otra alternativa similar a Protocol Buffers.
Hay buenos puntos de referencia de la comunidad Java sobre serialización / deserialización y tamaño de cable de estas tecnologías: https://github.com/eishay/jvm-serializers/wiki
En general, JSON tiene un tamaño de cable un poco más grande y un DeSer ligeramente peor, pero gana en ubicuidad y la capacidad de interpretarlo fácilmente sin el IDL de origen. El último punto es algo que Apache Avro está tratando de resolver, y supera a ambos en términos de rendimiento.
Microsoft ha lanzado un paquete C # NuGet Microsoft.Hadoop.Avro .
fuente
Esta publicación compara velocidades y tamaños de serialización en .NET, incluidos JSON, BSON y XML.
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
fuente
A continuación se muestran algunos puntos de referencia recientes que muestran el rendimiento de los populares serializadores .NET.
Los puntos de referencia de Burning Monks muestran el rendimiento de serializar un POCO simple, mientras que los puntos de referencia integrales de Northwind muestran los resultados combinados de serializar una fila en cada tabla del conjunto de datos de Northwind de Microsoft.
Básicamente, los búferes de protocolo ( protobuf-net ) son aproximadamente 7 veces más rápidos que el serializador de biblioteca de clase Base más rápido en .NET (XML DataContractSerializer). También es más pequeña que la competencia, ya que también es 2,2 veces menor que Microsoft de formato de serialización más compacto (JsonDataContractSerializer).
Los serializadores de texto de ServiceStack son los más cercanos a igualar el rendimiento del protobuf-net binario, donde su serializador Json es solo 2.58 veces más lento que protobuf-net.
fuente
los búferes de protocolo están diseñados para el cable:
JSON es solo texto y debe analizarse . pista: codificar un "mil millones" de int en él tomaría bastantes caracteres: mil millones = 12 caracteres (escala larga), en binario encaja en un uint32_t Ahora, ¿qué hay de intentar codificar un doble? eso sería MUCHO MUCHO peor.
fuente
the wire
significa solo red. Ahora, cuando usamos tantas redes inalámbricas, puede parecer extraño.