Pregunta

tanto en términos de análisis sintáctico (serializar, deserializar) y el envío de paquetes a través de la red hay una buena estimación de las diferencias de rendimiento entre la serialización binaria y XML?

¿Fue útil?

Solución

Nop.

Depende en gran medida de qué tipo de datos se encuentra dentro del propio documento XML. Si usted tiene una gran cantidad de datos estructurados, la sobrecarga para XML será grande. Por ejemplo, si los datos se ve así:

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

Vas a tener mucha más sobrecarga que si usted tiene un documento XML que se parece a:

<book name="bible">
 In the beginning God created the heavens and the earth. 
 Now the earth was formless and empty ... 
 And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>

Así que en realidad no es una pregunta justa. Depende en gran medida de los datos que desea enviar, y cómo / si está comprimirlo.

Otros consejos

La mayor diferencia entre BinaryFormatter y la serialización XML es la portabilidad; BinaryFormatter es difícil garantizar entre las versiones, por lo que sólo es realmente adecuado para el almacenamiento o transferencia a corto plazo.

Sin embargo, se puede obtener lo mejor de ambos, y lo tienen más pequeño y que sea más rápido, mediante el uso de serialización binaria a medida - y que ni siquiera tiene que hágalo usted mismo -P

protobuf-net es una aplicación .NET de protocolo de Google amortigua especificación serialización binaria ; es más pequeño que cualquiera XmlSerializer o BinaryFormatter, completamente portátil (no sólo entre las versiones - se puede cargar una corriente pb en, por ejemplo, Java, etc), extensible y rápido. También se prueba bastante amplia, con un gran número de personas.

A desglose completo de tamaño y velocidad, que cubre XmlSerializer, BinaryFormatter, DataContractSerializer y protobuf-Net es aquí .

Por instinto que se quiere decir que el binario es más eficiente, pero en realidad depende de los datos que se están serializados.

Consulte este artículo: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

Sólo señalando el rendimiento no es la única métrica es posible que desee ver.

  • facilidad de construcción. ¿Tiene varios días / semanas para construir una rutina serializador / deserialiser y probarlo a fondo o que el tiempo podría ser mejor gastado en las características.
  • Facilidad de consumir los datos. ¿Puede un cliente utilizar un analizador de código abierto pre-construidos o hacer que necesitan para poner en práctica un montón de (potencialmente con errores) Código de sí mismos?
  • Facilidad de depuración. Va ser capaz de ver los datos en tránsito ayuda a depurar? A continuación, un formato binario tenderá a ocultar cualquier problema.
  • ¿Cuál es el coste de mantenimiento para cada método?

En lo personal, me gustaría utilizar un estándar XML publicado y bibliotecas de análisis de código abierto hasta que un cuello de botella es demostrado por las pruebas reales.

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