如果您确定性能影响来自 I/O,并且您无法更改这两个应用程序,那么您确实可以做一些事情。
对现有应用程序代码进行零更改的第一个解决方案:使用RAM 磁盘。如果他们将该文件用作共享内存,则无需任何其他更改即可执行此操作。如果数据是持久的,您可能需要在每次写入后执行后台复制到另一个媒体。性能不如真正的共享内存,但至少您不必等待缓慢的 I/O 操作。
第二种解决方案,仅在必须读取数据的应用程序中进行更改:通常 XML 文件的解析非常慢(特别是如果您正在使用XmlDocument
并且文件不是很少)。在这种情况下,使用XmlReader
,您必须使您的读取代码更加复杂并忘记 XPath 查询,但它的性能将比它好很多倍XmlDocument
,并且不会减慢增加文件大小的速度。
小(或不那么小)更新:如果可以更改第二个应用程序(我猜是读取文件的那个)的代码,您可以做一些事情来提高其性能。首先不要每次都读取文件。检查其时间戳,FileSystemWatcher
为该文件或其他任何内容注册一个,但不要每次都读取/解析文件。当您这样做时,您可以向前迈出一步:仅在文件更改时读取/解析文件,准备您XmlDocument
的后台(另一个线程)并使其可用于轮询请求。如果请求是间隔的,他们甚至可能会看到非常快的响应时间(但XmlDocument
对典型文件的 XPath 查询性能进行了概要分析)。
编辑:在这里您可以找到 Microsoft 提供的 RAM 磁盘。这非常简单和天真,但通常你/我们不需要更多。此外,它是 DDK 上的一个示例,因此您也将获得源代码(在这种情况下......只是为了好玩)。