2011-06-27 154 views
2

有谁知道哪个更高效/更快。我自己测试这种方法的好方法是什么,我没有大的XML文档(< 500 KB,不知道这是大还是小),但我必须在代码中重复写这些语句,所以想知道这是更好/最优的。Linq性能:哪个查询更快

XDocument doc = XDocument.Load(file);

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

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

另一种:

doc.Root.Elements("childNodes"); 

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

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

doc.Root.Descendants("childNodes") ; 

当比较:

doc.XPathSelectElement("/xpath").Value 

是任何快于DOM方法即

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

你有没有尝试过对它们进行基准测试? –

+0

任何人都不可能知道这个答案。只是测试你的自我!子孙对元素的性能高度依赖于XML文档的结构 – ColinE

回答

2

您可以使用此配置文件自行Stopwatch class,或者如果是的话非常重要的是,研究诸如蚂蚁分析器这样的工具,它会给你一些适当的指标。

+0

过了一段时间,因为我检查了这一点,无论如何以备将来参考,并帮助其他人 - 使用XMLDocument而不是XDocument显着更慢。此外,在适用的情况下使用XElement,而不必创建XDocument更高效。上述查询的效率非常相似,XML结构略有不同。我没有机会测试显着大的XML。 –