2010-12-08 18 views
15

Ahora, me doy cuenta de que ha habido este tipo de preguntas antes (especialmente this, que creo que es una muy buena descripción de los dos objetos). Mi pregunta es más sobre el rendimiento. Tengo varios documentos XML que tienen más de 100 a 300 K de tamaño. Me he dado cuenta de que hay algún retraso al cargar esta información en un objeto XDocument en lugar de XmlDocument. ¿Hay una diferencia de rendimiento seria entre estos dos objetos? ¿Acceden al contenido del XML de manera diferente? Cuando se trabaja con una cadena de XML, que es lo preferido, o hay una diferencia. El uso final de estos objetos es ejecutar consultas (XPath o LINQ, según corresponda) en el objeto en cuestión.Rendimiento: XDocument versus XmlDocument

Una vez más, esto es principalmente una cuestión de rendimiento, en relación con la memoria y la velocidad.

Respuesta

20

XmlDocument es una implementación puramente administrada del Modelo de objetos de documento. No hay interoperabilidad con ningún componente COM, como la biblioteca MSXML. Cualquier reclamo de lo contrario es completamente falso. Todo el conjunto de API de XLinq surgió como una forma más amigable de interactuar con XML con la introducción de LINQ en .NET Framework.

Si intenta maximizar el rendimiento y se siente cómodo con XPath, intente utilizar XmlDocument y use compiled XPath expressions.

+2

Y LINQ no mejora mágicamente el rendimiento. Tampoco es ese el objetivo de LINQ: el objetivo es aumentar la productividad del programador, lo que puede suceder si ya conoce LINQ y no conoce las "viejas" API XML que ofrece el marco. –

4

XmlReader es la API más baja en .NET que todas las demás API XML en .NET usan bajo las escenas. Naturalmente, eso significa que es el más difícil de tratar, así como el más rápido. Es una API de transmisión, por lo que también se adapta mejor a la memoria.

Entre XmlDocument y XDocument también conocido como LINQ to XML, he aquí algunos números en bruto: https://www.altamiracorp.com/blog/employee-posts/performance-linq-to-sql-vs, http://blogs.msdn.com/b/codejunkie/archive/2008/10/08/xmldocument-vs-xelement-performance.aspx

Ambos de los cuales se encuentran XDocument clase de ser más rápido/más eficiente. La productividad/eficiencia del programador no debe ignorarse también. Personalmente, me resulta más fácil trabajar con XDocument.