XML作为虚拟registry使应用程序运行缓慢

我正在构build“应用程序虚拟化”产品。 我使用XML文件作为虚拟registry。 从我的软件生成的虚拟应用程序访问虚拟registryXml。 它运行,但运行非常缓慢。

我在每个Registry API调用中加载和卸载XML,因为来自父级的多个进程都访问同一个registry文件。 这可能会导致应用程序运行缓慢。

任何人都可以让我知道XML的替代scheme…

你可以使用数据库来代替。 这会更快。 Sqlite是轻量级和强大的。

如果你把它加载到内存中并从那里操作,那么你的问题不是XML。 剖析你的应用程序,找出它花费的大部分时间。 我想你可能会发现大部分时间都在搜索你想要访问的项目。

其文本到树的转换时间。 我在Loadaing的代码中管理这个,并在所有进程中解析XML,只有在任何一个进程发生写入之后。

那么,你当然可以总是使用真正的注册表,这是线程安全和快速的…

否则,您将不得不创建一个单独的进程来管理您的虚拟XML注册表,将XML结构保存在内存中,因此不必一直读/写。 然后,需要访问它的进程可以使用IPC与注册表进程进行通信。

另一个想法是,如果多个进程不可能一直更新注册表:将虚拟XML注册表保存在内存中,并在更改时将其写入磁盘,但通过后台线程异步。 在访问注册表时,首先检查文件是否被更改; 如果没有,你不需要重新加载它。