Какова производительность .net -> код реестра? - PullRequest
1 голос
/ 17 мая 2011

Грубо говоря, какова производительность кода .net, который читает / удаляет ключи из реестра Windows? Это похоже на файл ввода / вывода? Быстрее? ближе к памяти ввода / вывода? помедленнее? ближе к сети ввода-вывода? (я не могу себе представить ... просто указано для полноты =)

1 Ответ

2 голосов
/ 17 мая 2011

Вы даже не можете начать сравнивать сетевой ввод-вывод с доступом к локальному файлу-вводу-выводу / реестру, потому что в работе так много факторов.

Теоретически можно разработать какой-то тест длясравните чтение файла с чтением реестра, но я не думаю, что это принесет какую-либо пользу.Этот тест все еще может быть ошибочным, поскольку он может зависеть от того, из каких ключей вы читаете, и от других приложений, которые также могут читать реестр в фоновом режиме.

Если вам нужен доступ к реестру, тогда требуется времяв значительной степени не имеет значения, потому что у вас нет другого выбора, кроме как сделать это в любом случае - аналогично с файлом ввода / вывода.

РЕДАКТИРОВАТЬ:

Быстрый тест дает следующие результаты:

  • 100 000 считываний реестра занимает 1,81 - 1,89 с

  • 100 000 считываний 9-байтового файла занимает 19.80 - 20,10 с (поэтому реестр намного (~ 10x) быстрее:)

    Dim sw As New Stopwatch
    
    Dim subkey As RegistryKey
    Dim value As String
    Dim keyValue As String
    
    sw.Reset()
    sw.Start()
    For i As Integer = 1 To 100000
        keyValue = "SOFTWARE\Codejock Software\Xtreme SuitePro ActiveX v15.0.2"
        subkey = Registry.LocalMachine.OpenSubKey(keyValue, False)
        value = subkey.GetValue("Installation Directory")
    Next
    sw.Stop()
    Debug.WriteLine("Registry Read:" + sw.ElapsedMilliseconds.ToString)
    
    Dim fileContents As String
    
    sw.Reset()
    sw.Start()
    For i As Integer = 1 To 100000
        fileContents = My.Computer.FileSystem.ReadAllText("C:\scratch\Text.txt")
    Next
    sw.Stop()
    Debug.WriteLine("File Read:" + sw.ElapsedMilliseconds.ToString)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...