2011-02-06 13 views
7

Escuché que LINQ to XML tiene algunos problemas de rendimiento y algunos de mis amigos me recomendaron no usarlo en mi aplicación. No pude encontrar nada relevante en MSDN y no deseo confiar en "algún blog de Internet". ¿Alguien sabe de un punto de vista oficial sobre este tema o alguna fuente confiable?rendimiento de linq a xml

+0

Comparación de XPath y LINQ a XML: http://msdn.microsoft.com/en-us/library/bb675156.aspx –

+0

Relacionado: http://stackoverflow.com/questions/14000846/xdocument-performance – nawfal

Respuesta

12

mediante LINQ to XML leerá el archivo en la memoria.

Si está leyendo un enorme archivo XML (cientos de megabytes), este es un problema.
En su lugar, puede utilizar un XmlReader sin formato, que proporciona una vista solo de reenvío de un archivo XML y no leerá todo el archivo a la vez.

Si se trata de archivos XML de tamaño normal, LINQ to XML estará bien.

LINQ to XML es varios órdenes de magnitud más fácil de usar que XmlReader.
Solo debe usar XmlReader si sabe que tratará con archivos XML de 200 MB, o si ha medido su rendimiento y ha demostrado que el constructor XDocument es demasiado lento.

+7

Microsoft proporciona ejemplos sobre cómo transmitir la entrada/salida de un archivo xml utilizando Linq a Xml para que no termine cargando todo el archivo en la memoria solo en pequeñas cantidades: http://msdn.microsoft.com/en- us/library/system.xml.linq.xstreamingelement.aspx # Y1392 – Michael

4

Sólo Google linq vs xmlreader lo tendrá. El resultado superior, http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html, lleva a la conclusión de que es más lento en comparación con xmlreader (por supuesto, ya que linq2Xml está construido sobre xmlreader), pero en mi humilde opinión es mucho mejor que aceptable, a medida que gana la flexibilidad y la facilidad para leer/codificar