Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 26039|Respuesta: 2

[Fuente] Comparación de serialización de XML, Json, Hessian, búferes de protocolo

[Copiar enlace]
Publicado en 13/4/2018 13:23:31 | | | |
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.





Anterior:Windows instala el programa de servicio .net/c#
Próximo:Solución StreamReader para caracteres distorsionados al leer archivos
 Propietario| Publicado en 31/8/2023 20:57:23 |
Benchmarks de rendimiento de MessagePack y protobuf-net
https://www.itsvse.com/thread-10655-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com