有没有办法重用XmlReader?

时间:2010-04-07 09:11:36

标签: .net xml performance

我有一个使用XmlReader的进程。我已经做了很多工作来挤出最大的性能。到目前为止,我们使用Reader而不是XmlDoc或DataSet.GetXml()获得了巨大的收益。我们期望每秒多次获取XML,并且我希望避免每次重新创建读取器的开销。我已经缓存了XmlReaderSettings,但无论如何都要重用XmlReader,还是每次都需要重新创建它?

2 个答案:

答案 0 :(得分:4)

有可能通过一些技巧重用XmlReader,但你不应该。它仅供一次性使用,因此没有任何方法可以使用不同的源重新启动。

尝试重复使用它可能比创建一个新的阅读器更有用。创建阅读器相当便宜,而且几乎不会出现性能问题。

答案 1 :(得分:2)

这几乎可以肯定是一种浪费的努力。 XML需要来自某个地方,即网卡上磁盘上的文件。 I / O操作比实现读取器类的任何操作都慢几个数量级。

典型的陷阱是您运行测试程序以反复使用相同的数据来分析代码。这不是一个现实的测试,您将从缓存副本(例如文件系统缓存)中检索XML。这非常快,它以总线速度运行。这在生产机器中不起作用,数据几乎肯定尚未缓存。例如,它需要从磁盘读取。那是非常慢。