9
votes

Xpathselectelement vs descendants

Je me demandais s'il y a des différences de performance lorsque vous utilisez des questions simples telles que: xxx


1 commentaires

Note latérale: réponses à cette question ignore Stackoverflow.com/Questtions/3705020/... - Deuxième requête retournera des nœuds comme" / foo / acteurs / aléatoire_nodes / acteur "contrairement à celui qui ne renvoie que" Acteur "C'est enfant immédiat d'acteurs".


4 Réponses :


9
votes

Notez que ce xxx

est l'équivalent de votre première instruction.

Il y aura une différence de performance, car les méthodes font des choses très différentes sous la hotte. . Cependant, optimiser les opérations purement en mémoire est un peu inutile, à moins que vous traitez avec un ensemble de données volumineux. Si vous avez affaire à un ensemble de données volumineux, vous devriez mesurer la performance des deux alternatives plutôt que d'essayer de prédire lequel on fonctionnera plus rapidement.



2
votes

Oui, il y aura bien que les deux lignes ne soient pas équivalentes.

Le XPATH doit être analysé finalement dans une expression LINQ qui ferait alors cela: - p>

var x = document.Elements("actors").Elements("actor");


0 commentaires

5
votes

1 commentaires

Je pense que l'analyse comparative est un peu défectueuse car elle compare les expressions de "//" XPath pour accéder aux descendants directs.



2
votes

de mes tests limités, les performances semblent très similaires. J'ai pris un exemple de message XML de http : //msdn.microsoft.com/en-us/library/windows/desktop/ms762271 (v = vs.85) .aspx

xpath: p> xxx pré>

Query Linq: P>

from bookElement in xmlElement.Descendants( "book" )
where bookElement.Attribute( "id" ).Value == "bk109"
select bookElement


1 commentaires

XPathDocument entraîne une très grande empreinte mémoire pour des documents XML non triviaux.