【问题标题】:Performance: XDocument versus XmlDocument性能:XDocument 与 XmlDocument
【发布时间】:2011-05-21 23:59:55
【问题描述】:

我已经阅读了两个here 之间的比较。这主要是性能问题,与内存和速度有关。

我有几个大小超过 100 到 300 K 的 XML 文档。我注意到在将此信息加载到 XDocument 而不是 XmlDocument 对象时存在一些滞后。

  • 这两个对象之间是否存在严重的性能差异?
  • 他们访问 XML 内容的方式不同吗?
  • 在处理 XML 字符串时,这是首选还是有区别?

这些对象的最终用途是针对相关对象运行查询(XPath 或 LINQ,具体取决于)。

【问题讨论】:

    标签: .net xml performance linq-to-xml xmldocument


    【解决方案1】:

    XmlDocument 是文档对象模型的纯托管实现。与任何 COM 组件(例如 MSXML 库)没有互操作性。否则,任何索赔都是完全虚假的。随着 .NET Framework 中 LINQ 的引入,整个 Xlinq API 集作为一种与 XML 交互的更友好方式而出现。

    如果您想最大限度地提高性能并且习惯使用 XPath,请尝试使用 XmlDocument 和 compiled XPath expressions

    【讨论】:

    • 而且 LINQ 并没有神奇地提高性能。这也不是 LINQ 的目标 - 目标是提高程序员的工作效率,如果您已经了解 LINQ 而您不了解该框架提供的“旧” XML API,那么它可能会实现。
    【解决方案2】:

    XmlReader 是 .NET 中所有其他 XML API 在后台使用的最低 API。当然,这意味着它是最难处理的,也是最快的。它是一个流式 API,因此它也最适合内存。

    XmlDocumentXDocument 之间,也就是 Linq to XML,这里有一些原始数字:https://docs.microsoft.com/en-us/archive/blogs/codejunkie/xmldocument-vs-xelement-performance

    发现XDocument 类更快/更高效。程序员的生产力/效率也不应该被忽视。我个人觉得使用XDocument 更容易。

    【讨论】:

      【解决方案3】:

      如果其他人仍在寻找答案... 我自己设法做了一些基准测试。 XDocument 似乎大大超过了 XmlDocument。当然,您可能很想将 XmlReader 纳入其中,但这是另一个话题。

      这是我的小基准测试结果:https://github.com/zulimazuli/dotnetXmlBenchmarks

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 2015-02-17
        • 1970-01-01
        • 2011-02-02
        • 1970-01-01
        • 2010-12-03
        相关资源
        最近更新 更多