Performance 读取注册表项的性能?

Performance 读取注册表项的性能?,performance,registry,Performance,Registry,我想知道通过标准C#库从Windows注册表读取注册表值需要多长时间(毫秒)。在本例中,我正在阅读一些代理设置 我应该期望什么数量级的值? 是否有好的基准数据可用 我正在运行WS2k8 R2 amd64。奖励点:操作系统sku/版本对此度量的影响有多大 using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software/Copium")) { return (string)registryKe

我想知道通过标准C#库从Windows注册表读取注册表值需要多长时间(毫秒)。在本例中,我正在阅读一些代理设置

我应该期望什么数量级的值? 是否有好的基准数据可用

我正在运行WS2k8 R2 amd64。奖励点:操作系统sku/版本对此度量的影响有多大

 using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software/Copium")) 
 { 
      return (string)registryKey.GetValue("BinDir"); 
 } 

陈雷蒙的这篇博文应该很有帮助:


我想补充一点,一般来说,不建议在C#apps的注册表中存储设置、使用持久化存储、配置文件或类似的东西。处理注册表时存在与权限相关的问题。阅读通常不是一个问题,但如果你想坚持下去,事情就会变得棘手,尤其是UAC和更新的操作系统,它们会对事情进行影子复制。

我不能引用数字,因为我不知道。但在刚刚阅读了30页关于注册中心的书后,以下我不知道的值得注意的事情变得清晰起来

  • 注册表是事务性的,具有故障保护以防止损坏。这会影响性能。因为事务级别是读提交的,所以读不应该被写阻塞,所以它们应该是性能良好的

  • 注册表缓存在内存中(不管怎样,经常使用的值),因此如果您经常访问一组键,那么在第一次命中后,性能应该保持稳定


我正在开发的一些系统应用程序被锁定到基本上禁止访问注册表的地步。应用程序数据文件夹是用户数据设置的首选文件夹,其他任何内容都必须存储在其他位置。正如我所说,它是检索操作系统代理设置。这不是一个设计上的选择。我建议添加博客文章的标题(即)——好吧,这可能会引起一些重新措辞的工作。如果你没有时间(等待你的许可),我会帮你做的。