gpt4 book ai didi

.net - XPathNavigator 和 XmlReader 之间的速度差异到底有多大?

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:57 26 4
gpt4 key购买 nike

我有一个相当大的 XML 文件,我需要将其解析为 .NET 类结构(以映射到固定长度的记录格式并通过 MQ 传输)。性能很重要,但不是绝对关键。

我几乎总是使用 XPathNavigator 来读取 XML 文件,因为它比 XmlReader 容易得多。另一方面,我知道 XmlReaderXPathNavigator 快,因为理论上它一次只读取一个节点,而 XPathNavigator 必须读取足够的内容执行 XPath,可能是整个文档。

我的问题是:它到底快了多少?读取几千个节点时会有明显的不同吗?我几乎必须切换到 XmlReader 的转折点是什么?还是 XPathNavigator 优化到始终是一个不错的选择?

我的大部分 XML 经验都是关于相对较小的文件,因此我正在寻找任何处理过大文件的人的意见。

最佳答案

据我所知,唯一可以获得 XPathNavigator 实现的地方是 .Xml.Linq.XDocument 或 XPathDocument,它们都将整个树保存在内存中。

另一方面,XmlReader 可以检索和解析 XML 流,而无需将一组节点收集到树中。

因此,假设您以仅向前的方式收集所有需要的数据,那么对于大型数据集,XmlReader 应该仅基于以下条件执行 XPathNavigator:-

  1. 无论如何,您都必须反序列化 XML 流来填充文档,并且
  2. 您不必将大量项目加载到内存中。

关于.net - XPathNavigator 和 XmlReader 之间的速度差异到底有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com