【问题标题】:Is there a way to reuse an XmlReader?有没有办法重用 XmlReader?
【发布时间】:2010-04-07 09:11:36
【问题描述】:

我有一个使用 XmlReader 的进程。我已经做了很多工作来从中获得最大的性能。到目前为止,与使用 XmlDoc 或 DataSet.GetXml() 相比,我们从使用 Reader 获得了巨大的收益。我们希望每秒多次获取 XML,我希望避免每次都重新创建阅读器的开销。我已经缓存了 XmlReaderSettings,但有没有可以重用 XmlReader 还是每次都需要重新创建它?

【问题讨论】:

    标签: .net xml performance


    【解决方案1】:

    也许可以通过一些技巧来重用 XmlReader,但你不应该这样做。它仅供一次性使用,因此无法使用其他来源重新启动自身。

    无论如何,尝试重用它可能比创建新阅读器要多。创建阅读器相当便宜,而且几乎不会出现性能问题。

    【讨论】:

    • 比较便宜。但我已经做了其他所有事情,所以我尽量刮胡子,因为它是目前的瓶颈。并不是说性能是一个问题,而是我内心的极客想尽可能地刮胡子。虽然过早的优化是万恶之源;)我无能为力
    【解决方案2】:

    这几乎可以肯定是白费力气。 XML 需要来自某个地方,即网卡上磁盘上的文件。 I/O 操作比您为实例化读取器类所做的任何操作都要慢几个数量级。

    典型的陷阱是您运行一个测试程序,一遍又一遍地使用相同的数据分析代码。这不是一个实际的测试,您将从缓存副本(例如文件系统缓存)中检索 XML。这非常快,它以总线速度运行。这在生产机器上是行不通的,数据几乎肯定还没有被缓存。例如,它需要从磁盘中读取。这非常很慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 2012-08-29
      • 2014-11-16
      • 2017-08-07
      • 2022-06-10
      • 2022-01-16
      • 2013-11-13
      • 2012-11-20
      相关资源
      最近更新 更多