Pregunta

¿Alguien tiene alguna información sobre las características de rendimiento de los Búferes de Protocolo frente a HIJO (binary JSON) o frente a JSON en general?

  • El tamaño de los cables
  • La serialización de velocidad
  • Deserialización de velocidad

Estas parecer una buena protocolos binarios para su uso a través de HTTP.Me pregunto que sería mejor en el largo plazo para un C# medio ambiente.

Aquí un poco de info que yo estaba leyendo en HIJO y Protocolo De Búferes.

¿Fue útil?

Solución

Artículos de segunda mano es otro de los Búferes de Protocolo-como alternativa también.

Hay buenos puntos de referencia de la comunidad de Java en la serialización/deserialización y el tamaño de los cables de estas tecnologías: https://github.com/eishay/jvm-serializers/wiki

En general, JSON tiene un poco más grande el tamaño de los cables y un poco peor DeSer, pero gana en la ubicuidad y la capacidad para interpretar fácilmente sin la fuente de IDL.El último punto es algo que Apache Avro está tratando de resolver, y es mejor tanto en términos de rendimiento.

Microsoft ha publicado un C# paquete de NuGet Microsoft.Hadoop.Avro.

Otros consejos

Este post compara la serialización de velocidades y tamaños .NET, como JSON, HIJO y XML.

alt text

alt text

http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx

A continuación se algunos puntos de referencia recientes que muestra el rendimiento de los populares Serializadores .NET.

El Burning Monks puntos de referencia muestran la el rendimiento de la serialización de un simple POCO mientras que el Northwind puntos de referencia mostrar los resultados combinados de la serialización de una fila en cada mesa de Neptuno conjunto de datos de Microsoft.

introducir descripción de la imagen aquí

Básicamente búferes de protocolo ( protobuf-net) es de alrededor de 7x más rápido que el más rápido de la biblioteca de clases base serializador en .NET (XML DataContractSerializer). También es más pequeña que la competencia, ya que también es 2.2x más pequeño que Microsoft de formato de serialización más compacto (JsonDataContractSerializer).

serializadores texto de ServiceStack son los más cercanos a igualar los resultados del binario protobuf-red donde su JSON Serializador es solamente 2.58x más lento que protobuf-net.

los búferes de protocolo está diseñado para que el hilo:

  1. de muy pequeño tamaño de mensaje - uno de los aspectos es muy eficiente variable de tamaño entero de la representación.
  2. Muy rápida la decodificación es un protocolo binario.
  3. protobuf genera super eficiente de C++ para la codificación y decodificación de los mensajes -- sugerencia:si usted codificar todos los var-enteros o estática del tamaño de los elementos en que se va a codificar y decodificar en determinista de la velocidad.
  4. Ofrece una MUY rica modelo de datos-eficiente de codificación muy complejas estructuras de datos.

JSON es sólo un texto y debe ser analiza.sugerencia:la codificación de un "mil millones" int en tomaría un buen montón de personajes:Mil millones = 12 caracteres (long scale) en binario, que se enmarca en un uint32_t Ahora, ¿qué acerca de tratar de codificar un doble ?que iba a ser MUCHO peor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top