Ken*_*enn 3 registry performance
我想知道从Windows注册表通过标准C#库读取注册表值需要多长时间(以毫秒为单位).在这种情况下,我正在阅读一些代理设置.
我应该期望什么数量级的值?有没有好的基准数据?
我正在运行WS2k8 R2 amd64.加分:OS sku /版本对此措施有多大影响?
using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software/Copium"))
{
return (string)registryKey.GetValue("BinDir");
}
Run Code Online (Sandbox Code Playgroud)
我不能引用数字,因为我不知道.但是刚刚在Windows Internals 5书中阅读了30页关于注册表的内容,以下我不知道的值得注意的事情变得清晰.
注册表是事务性的,并且具有故障保护,以防止损坏.这可能会影响性能.由于事务级别是读取提交的,因此读取不应阻止读取,因此它们应该具有高性能.
注册表缓存在内存中(无论如何经常使用的值),因此如果您经常访问一组键,性能应该在第一次命中后保持稳定.
Raymond Chen 的这篇博文应该会有所帮助: 读取注册表项的性能成本
我想补充一点,一般来说,不建议在 C# 应用程序的注册表中存储设置、使用持久存储、配置文件或类似性质的文件。在处理注册表时会出现与权限相关的问题。读取通常不是问题,但如果你要持久化某些内容,那么事情就会变得很棘手,尤其是对于 UAC 和影子复制内容的较新操作系统。
| 归档时间: |
|
| 查看次数: |
3079 次 |
| 最近记录: |