XML作为虚拟注册表使应用程序运行缓慢

时间:2011-02-12 12:45:12

标签: c++ windows registry virtualization registry-virtualization

我正在构建一个“Application Virtualization”产品。我使用XML文件作为虚拟注册表。 从我的软件生成的虚拟应用程序访问虚拟注册表Xml。 它运行,但运行速度非常慢。

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

任何人都可以让我知道XML的替代方案......

4 个答案:

答案 0 :(得分:1)

您可以改用数据库。它会更快。 Sqlite轻巧而强大。

答案 1 :(得分:0)

如果您将其加载到内存中并从那里对其进行操作,那么您的问题不是XML。 描述您的应用程序,以找出它花费大部分时间的位置。 我想你可能会发现它花费大部分时间来搜索你想要访问的项目。

答案 2 :(得分:0)

它的文本到树转换时间。 我在我的代码中通过在所有进程中加载​​和解析XML来管理它,只有在任何一个进程中发生了写入之后。

答案 3 :(得分:0)

嗯,你当然可以使用真正的注册表,它是线程安全且快速的......

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

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