2010-04-07 80 views
1

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

回答

4

可能通过使用一些技巧来重用XmlReader,但不应该这样做。它只用于一次性使用,所以它没有任何使用不同来源重新启动的方法。

试图重用它可能会比创建新的阅读器更多的工作。创建阅读器相当便宜,而且几乎不会成为性能问题。

+0

它相对便宜。但我已经做了所有其他事情,所以我正在尝试刮胡子,因为这是现在的瓶颈。不是表现是一个问题,但我内心的极客想在可能的情况下刮脸。虽然不成熟的优化是万恶之源;但我无法帮助它 – uriDium 2010-04-07 09:28:01

2

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

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