en términos de análisis (serialización, deserialización) y envío de paquetes a través de la red ¿hay alguna buena estimación de las diferencias de rendimiento entre la serialización binaria y xml?¿Hay alguna diferencia de rendimiento entre la serialización binaria y XML?
Respuesta
No.
Depende en gran medida de qué tipo de datos se encuentren dentro del documento XML en sí. Si tiene muchos datos estructurados, la sobrecarga para XML será grande. Por ejemplo, si los datos se parece a:
<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 no es realmente una buena pregunta. Depende en gran medida de los datos que USTED desee enviar, y de cómo/si lo está comprimiendo.
Instintivamente, podría querer decir que el binario es más eficiente, pero en realidad depende de los datos que se serializan.
revisar 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 crear una rutina de serializador/deserializador y probarla exhaustivamente o podría dedicar mejor ese tiempo a las funciones?
- Facilidad para consumir los datos. ¿Puede un cliente utilizar un analizador de código abierto preconstruido o necesita implementar un montón de códigos (potencialmente con errores)?
- Facilidad de depuración. ¿Ser capaz de ver los datos en tránsito ayuda a depurar? Entonces, un formato binario tenderá a ofuscar cualquier problema.
- ¿Cuál es el costo de mantenimiento de 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.
La mayor diferencia entre la serialización de BinaryFormatter
y xml es la portabilidad; BinaryFormatter es difícil de garantizar entre versiones, por lo que solo es realmente adecuado para almacenamiento o transferencia a corto plazo.
Sin embargo, se puede obtener lo mejor de ambos, y tenerlo más pequeña y tienen que es más rápido, mediante el uso de serialización binaria a medida - y que ni siquiera tiene que hacerlo usted mismo ;-P
protobuf-net es una implementación .NET de las especificaciones de serialización binaria de los buffers de protocolo de Google; es más pequeño que XmlSerializer
o BinaryFormatter
, totalmente portátil (no solo entre versiones: puede cargar un flujo de pb en, por ejemplo, java, etc.), extensible y rápido. También se prueba de manera bastante exhaustiva, con una cantidad considerable de usuarios.
un desglose completo de tamaño y velocidad, que cubre XmlSerializer
, BinaryFormatter
, DataContractSerializer
y protobuf-Net es here.
- 1. ¿Hay alguna diferencia (de rendimiento) entre Depurar y Liberar?
- 2. ¿Hay alguna diferencia de rendimiento entre myCollection.Where (...). FirstOrDefault() y myCollection.FirstOrDefault (...)
- 3. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
- 4. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 5. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 6. ¿Hay alguna diferencia entre SSLv3 y TLS1.0?
- 7. ¿Hay alguna diferencia entre CPython y Python
- 8. ¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
- 9. ¿Hay alguna diferencia entre MsgBox y MessageBox.Show?
- 10. ¿Hay alguna diferencia entre .NET y ASP.NET
- 11. ¿Hay alguna diferencia entre (local), '.' y localhost?
- 12. ¿Hay alguna diferencia entre: window.localStorage y localStorage?
- 13. ¿Hay alguna diferencia entre UITableViewCellAccessoryDetailDisclosureButton y UITableViewCellAccessoryDisclosureIndicator
- 14. ¿Hay alguna diferencia entre `ListView.invalidateViews()` y 'Adapter.notifyDataSetChanged()'?
- 15. ¿Hay alguna diferencia entre! == y! = En PHP?
- 16. ¿Hay alguna diferencia entre is_int() y ctype_digit()?
- 17. ¿Hay alguna diferencia entre readonly y {get; }
- 18. ¿Hay alguna diferencia de rendimiento entre la depuración Javac activada y desactivada?
- 19. serialización binaria/deserialización en C++ y C#
- 20. ¿Hay alguna diferencia entre "! =" Y "<>" en Oracle Sql?
- 21. ¿Hay alguna diferencia entre/\ s/g y/\ s +/g?
- 22. ¿Diferencia entre la versión binaria y la versión original?
- 23. ¿Hay alguna diferencia de rendimiento entre SQL Server Web y las ediciones Express?
- 24. ¿Hay alguna diferencia de rendimiento entre Begin * y * Async para sockets en .NET?
- 25. ¿Hay alguna diferencia de rendimiento entre mayor que y mayor que o igual?
- 26. Ignorar la serialización binaria en una propiedad
- 27. ¿Cuándo debo usar la serialización XML frente a la serialización binaria en .NET Framework?
- 28. serialización Json y Xml, ¿qué es un mejor rendimiento?
- 29. Diferencia de rendimiento entre IIf() y Si
- 30. ¿Por qué la serialización binaria es más rápida que la serialización xml?
Como esto es C#, ya hay XML y serializadores binarios que el OP podría usar y que están totalmente probados y funcionan. –