2010-10-14 24 views
2

Je me demande combien de temps il faut (en millisecondes) pour lire une valeur de registre à partir du registre Windows via des bibliothèques C# standard. Dans ce cas, je lis dans certains paramètres de proxy.Performance de lecture d'une clé de registre?

De quel ordre de grandeur dois-je m'attendre? Y a-t-il de bonnes données de référence disponibles?

Je cours WS2k8 R2 amd64. Points bonus: Quel est l'impact de la version/sku OS sur cette mesure?

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

Répondre

2

Essayez ce lien, il est un blog très utile: http://blogs.msdn.com/b/oldnewthing/archive/2006/02/22/536920.aspx

Je voudrais ajouter qu'en général, il est recommandé de ne pas stocker les paramètres dans le Registre pour les applications C#, l'utilisation persistait stockage, ou un fichier de configuration ou quelque chose de cette nature. Il existe des problèmes liés aux autorisations lorsque vous traitez avec le registre. La lecture n'est souvent pas un problème, mais si vous voulez persister, les choses deviennent difficiles, surtout avec l'UAC et les nouveaux systèmes d'exploitation qui copient les choses.

+0

Une partie du système que je développe des applications est verrouillé au point où frapper le registre est fondamentalement interdit. Le dossier Application Data est préféré pour les paramètres de données utilisateur, tout autre élément devant être stocké ailleurs. –

+0

comme je l'ai dit, il est de récupérer les paramètres de proxy OS. Ce n'est pas un choix de conception. – Kenn

3

Je ne peux pas citer de chiffres car je ne sais pas. Mais après avoir lu 30 pages dans le livre Windows Internals 5 sur le registre, les choses suivantes que je ne connaissais pas sont devenues claires.

  • Le Registre est transactionnel et possède des coffres à échecs pour éviter d'être corrompu. Cela peut affecter les performances. Étant donné que le niveau transactionnel est lu, les lectures ne doivent pas être bloquées par écrit, elles doivent donc être performantes. Le registre est mis en cache dans la mémoire (les valeurs fréquemment utilisées sont de toute façon), donc si vous accédez à un jeu de clés, les performances doivent rester stables après le premier hit.