Desde mi prueba limitada, el rendimiento parece muy similar. Tomé un mensaje XML de ejemplo de http://msdn.microsoft.com/en-us/library/windows/desktop/ms762271(v=vs.85).aspx
XPath:
/book[id='bk109']
LINQ consulta:
from bookElement in xmlElement.Descendants("book")
where bookElement.Attribute("id").Value == "bk109"
select bookElement
entonces ejecuta cada 10.000 veces (excluyendo el tiempo que tomó para analizar la cadena y la primera ejecutar para eliminar el ruido CLR).
Resultados (100.000 iteraciones)
- XPath en XElement: 60,7 ms
- LINQ para XML en XElement: 85,6 ms
- XPath en XPathDocument: 43,7 ms
Por lo tanto, parece que, al menos en algunos casos, la evaluación XPath en XElement tiene un rendimiento mejor que LINQ en XML. Las evaluaciones XPath en XPathDocument son incluso más rápidas.
embargo, parece que la carga de un XPathDocument tarda un poco más largo que la carga de un XDocument (1000 iteraciones):
- tiempo para cargar XPathDocument: 92.3 ms
- tiempo para cargar XDocument: 81,0 ms
Nota al pie: respuestas a esta pregunta ignorar http://stackoverflow.com/questions/3705020/what-is-the-difference-between- linq-to-xml-descenddants-and-elements - la segunda consulta devolverá nodos como "/ foo/actors/random_nodes/actor" a diferencia del primero que solo devuelve "actor" que es hijo inmediato de "actors". –