性能:XDocument与XmlDocument的比较

21

我已经阅读了这两个对象的比较结果,在这里。这主要涉及内存和速度方面的性能问题。

我有几个 XML 文档,大小在 100 到 300 K 之间。我注意到将这些信息加载到 XDocument 对象中时会存在一些延迟,而不是使用 XmlDocument 对象。

  • 这两个对象之间是否有严重的性能差异?
  • 它们是否以不同的方式访问 XML 内容?
  • 在使用 XML 字符串时,哪一个更好,还是有区别?

这些对象的最终用途是在相关的对象上运行查询 (XPath 或 LINQ, 取决于情况)。

3个回答

21

XmlDocument是文档对象模型(DOM)的纯托管实现。与任何COM组件(如MSXML库)不存在互操作性。任何其他说法都是完全虚假的。随着LINQ在.NET Framework中的引入,整个XLinq API集合也作为一种更友好的与XML交互的方式而出现。

如果您尝试最大化性能并且熟悉使用XPath,请尝试使用XmlDocument并使用编译的XPath表达式


2
LINQ并不能神奇地提高性能。这也不是LINQ的目标 - 目标是提高程序员的生产力,如果您已经了解LINQ并且不了解框架提供的“旧”XML API,则可能会实现这一目标。 - The Dag

8
XmlReader是.NET中最基础的API,所有其他XML API都在其底层使用。自然而然地,这意味着它最难处理,但也是最快速的。它是一种流式API,因此最适合内存。在XmlDocumentXDocument(也称为Linq to XML)之间,以下是一些原始数据:https://learn.microsoft.com/en-us/archive/blogs/codejunkie/xmldocument-vs-xelement-performance,其中发现XDocument类更快/更有效率。同时也不应忽略程序员的生产力/效率。个人认为使用XDocument更容易操作。

2
如果还有其他人在寻找答案... 我已经自己进行了一些基准测试。看起来XDocument比XmlDocument要好得多。当然,你可能会想涉及XmlReader,但这是另一个话题。
这是我的小型基准测试结果:https://github.com/zulimazuli/dotnetXmlBenchmarks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接