2011-06-27 2 views
2

Est-ce que quelqu'un sait ce qui est le plus efficace/le plus rapide? Ce qui serait un bon moyen de tester cela moi-même, je n'ai pas de grands documents XML (< 500 KB, je ne sais pas si c'est grand ou petit) mais je dois écrire ces instructions encore et encore dans le code, me demandant ce qui est meilleur/optimal.Performances Linq: quelle requête est la plus rapide

XDocument doc = XDocument.Load (fichier);

doc.Root.Element("childNode").Value; 

ou

doc.Element("rootNode").Element("childNode").Value ; 

Un autre:

doc.Root.Elements("childNodes"); 

vs.

doc.Element("rootNode).Elements("childNodes"); 

vs.

doc.Element("rootNode").Descendants("childNodes"); 

contre

doc.Root.Descendants("childNodes") ; 

Lorsque l'on compare:

doc.XPathSelectElement("/xpath").Value 

est-il plus rapide que la méthode DOM-à-dire

XMLDocument dom = new XMLDocument(); 
dom.LoadXml(input); 
dom.SelectSingleNode("/xpath").Value 
+2

Avez-vous essayé de les comparer? –

+0

Il est hautement improbable que quelqu'un connaisse déjà cette réponse. Testez-le vous-même! De plus, les performances de Descendants et d'éléments dépendent fortement de la structure du document XML. – ColinE

Répondre

2

Vous pouvez profiler vous-même en utilisant la Stopwatch class, ou si c'est la Lly important, regardez dans des outils tels que Ants Profiler qui vous donnera des mesures appropriées.

+0

Cela fait un bout de temps que je l'ai vérifié, pour toute référence ultérieure, et aider quelqu'un d'autre - Utiliser XMLDocument au lieu de XDocument est beaucoup plus lent. En outre, l'utilisation de XElement, le cas échéant, au lieu de devoir créer XDocument est plus efficace. L'efficacité des requêtes ci-dessus est très similaire, avec une légère variation dans la structure XML. Je n'ai pas eu l'occasion de tester un fichier XML significativement grand. –

Questions connexes