Breve introducción
Este blog compara principalmente el rendimiento de serialización y deserialización de Xml, Json, Hessian y Protocol Buffers, dejando de lado los conceptos básicos de XML y Json. Hessian: Hessian es una herramienta remota onhttp ligera que proporciona funcionalidad RMI usando el protocolo binario RPC y capacidades de serialización integradas. Búferes de protocolo: Un formato para el intercambio de datos de Google, que es independiente del lenguaje y, al ser un formato binario, es mucho más rápido que usar XML para el intercambio de datos, y puede usarse para la comunicación de datos entre aplicaciones distribuidas o el intercambio de datos en entornos heterogéneos. Como formato de transmisión de datos binarios eficiente y compatible, puede utilizarse en muchos campos como transmisión en red, archivos de configuración, almacenamiento de datos, etc. Google ofrece implementaciones de Java, C++, Python, y ahora hay implementaciones de lenguajes como C# en Internet.
Serialización y deserialización
XML: Usa el XmlSerializer que viene con .Net. Json: Utiliza ServiceStack.Text, que es más eficiente que Newtonsoft.Json, pero el más rápido debería ser fastJSON.net. Hessiano: Usando la biblioteca HessianCSharp, descargada desde nuget. Búferes de protocolo: Usando protobuf-net, descargado desde Nuget. A continuación se presentan las entidades utilizadas en la prueba.
El procesador i7HQ de 2,6 Hz utilizado en la máquina de pruebas. Aquí están los resultados de la prueba Serialización
Deserialización
Longitud del byte tras la serialización
Hablemos primero de la serialización, aquí se prueba con 100 veces, 1000 veces, 10000 y 100000 veces respectivamente, la ordenada es el tiempo de completación, la unidad es milisegundos, puedes ver que al probar dentro de 10000 veces, el consumo de tiempo de 4 tipos de serialización es muy pequeño, todo dentro de 200 milisegundos, tras 10.000 veces, a 100.000 veces, todas empiezan a crecer, la peor es Xml, la mejor son los búferes de protocolo, pero cuando está dentro de 10.000 veces, El arpillera es mejor que los Protocol Buffers. No hay mucha diferencia en 10.000 deserializaciones, pero a 10.000 veces ya podemos ver que Hessian consume más tiempo, y con 100.000 veces, Hessian supera directamente Xml, lo que siempre me hace pensar que hay un problema con mi código, y el mejor rendimiento sigue siendo los Protocol Buffers. La longitud de byte serializado es, comprensiblemente, la más larga en Xml, porque el archivo contiene muchas etiquetas finales (),</Name> y Protocol Buffers sigue siendo la mejor.
Basándonos en el gráfico anterior, podemos concluir casi rápidamente que Protocol Buffers es el mejor, pero creo que aún necesitamos evaluarlo de forma exhaustiva desde los siguientes aspectos: 1. Legibilidad: XML y Json son texto tras la serialización, y la legibilidad es muy buena; por ejemplo, si hay un error en el medio, podemos ver fácilmente los datos intercambiados e incluso simularlos para probar; Tanto los búferes de Hessian como los de protocolo son binarios, y el contenido es ilegible tras la serialización, lo que tendrá cierto impacto en la resolución de problemas del sistema. 2. Versatilidad: XML y JSON ya son formatos antiguos de intercambio de datos, y estos son los dos formatos para el intercambio de datos entre sistemas generales. Tanto los búferes de Hessian como los de protocolo son relativamente impopulares y se usan menos. 3. Comodidad: Hessian es en realidad un framework RPC completo, define la interfaz en el lado del servidor e implementa la interfaz, copia la interfaz al cliente. Tras un poco de programación, podemos llamar al lado del servidor como si llamara a un método local, que no está disponible en las otras tres herramientas, y el rendimiento no es malo.
|