c# - read - XPath vs DeSerialization: cuál es mejor en rendimiento para operaciones de lectura




xpath vb net (2)

Estoy pasando documentos XML pequeños (2-10 KB) como entrada a un servicio WCF. ahora tengo dos opciones para leer valores de datos del XML entrante

  1. Deserializar a un objeto fuertemente tipado y usar propiedades de objeto para acceder a los valores
  2. usa XPath para acceder a los valores

qué enfoque es más rápido? algunas estadísticas para apoyar su respuesta serían geniales.


Hay una tercera opción de seguir con XML, pero consulte con cualquier API XML que esté utilizando, por ejemplo, LINQ to XML hace que las consultas sean relativamente sencillas en el código.

¿Ya has analizado el texto en un documento XML?

¿Estás convencido de que esto es realmente un cuello de botella de rendimiento significativo en tu código? (por ejemplo, si estás hablando con una base de datos, entonces no te preocupes por esto para empezar, simplemente haz que funcione de la manera más simple)

¿Las consultas son siempre las mismas o son dinámicas de alguna manera?

¿Tiene una plataforma de prueba con mensajes realistas y consultas? Si no, necesita uno para evaluar las respuestas dadas aquí con sus datos. Si lo hace, yo esperaría que sea razonablemente fácil probarlo usted mismo :)


Yo lo deserializaría.

Si usa xpath, lo deserializará (o "cargará") a XmlDocument o algo de todos modos. Entonces, ambas soluciones usan deserialización de tiempo. Una vez hecho esto, xpath será más lento debido al tiempo dedicado al análisis de esa cadena, a la resolución de nombres, a la ejecución de funciones, etc. Además, si vas con xpath, no obtienes ningún tipo de seguridad. Su compilador no puede verificar la sintaxis xpath por usted.

Si usa XmlSerializer y clases, obtiene tipeo estático. Acceso realmente rápido a sus datos, y si desea consultarlos con xpath, todavía hay maneras de hacerlo.

Además, me gustaría decir que su código probablemente sería más fácil de entender con las clases.

El único inconveniente es que el xml debe ajustarse al mismo esquema todo el tiempo, pero eso podría no ser un problema real en su caso.

Espero que perdonen la ausencia de estadísticas, creo que los argumentos son lo suficientemente sólidos sin ejemplos. Si quieres una respuesta definitiva, prueba ambos y ten un cronómetro listo.





xpath