粗略地說,什麼是的.NET代碼讀取/從Windows註冊表中刪除鍵的表現?它是否類似於文件I/O?更快?更接近內存I/O?比較慢?更接近網絡I/O? (我不能想象......只是陳述的完整性=).net - >註冊表代碼的性能如何?
1
A
回答
2
你甚至不能啓動比較網絡I/O與本地文件I/O /註冊表訪問,因爲有在工作,所以很多因素。
理論上你可以設計出某種檢驗比較文件的讀取與註冊表中讀取,但我不認爲這將是任何好處。此測試仍然可能存在缺陷,因爲它可能取決於您正在閱讀哪些密鑰以及其他可能在後臺讀取註冊表的應用程序。
如果您需要訪問註冊表,然後花費的時間基本上是無能爲力的,因爲你沒有選擇,但這樣做也無妨 - 同樣與文件I/O。
編輯:
快速測試得出以下結果:
100000註冊表中讀取需要1.81 - 1.89小號
100000讀的9個字節的文件需要19.80 - 20.10小號(所以註冊表是多少(〜10倍),更快的:)
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)
相關問題
- 1. 如何通過C#中的代碼編輯Windows註冊表值(註冊表)?
- 2. <script>代碼裏面的代碼沒有註冊
- 3. 如何使用郵件列表註冊表單的Rails代碼
- 4. 性能userscript注入代碼
- 5. 註冊表中的錯誤代碼
- 6. .NET依賴注入自動註冊與性能
- 7. 如何在asp.net web表單中註冊css表單代碼
- 8. wso2 esb代理註冊表持久性
- 9. 如何比較C代碼註冊表中的LONG數據?
- 10. 如何提高將數據寫入註冊表的性能?
- 11. 在Facebook上註冊表單代碼
- 12. 蟒蛇代碼讀取註冊表
- 13. 用Java代碼運行RMI註冊表
- 14. 性能計數器註冊表驗證
- 15. C#如何迭代註冊表?
- 16. LaTeX - 房源 - 代碼註冊
- 17. Python註冊/登錄代碼
- 18. HLSL代碼沒有註冊?
- 19. 如何用這個mailchimp代碼創建一行註冊表單
- 20. 如何從驅動程序代碼中讀取註冊表?
- 21. 如何提高此代碼的性能?
- 22. 如何在django註冊中註冊註冊表格
- 23. 如何測量.NET中的代碼性能?
- 24. 如何註冊表的CallableStatement
- 25. Kubernetes私人碼頭註冊表 - 註冊表代理不起作用
- 26. 允許註冊和註銷的網站郵件列表代碼
- 27. 如何避免註冊表清潔工不去除由代碼創建的註冊表項
- 28. 使用.NET的Windows註冊表
- 29. 沒有.NET的C++註冊表處理
- 30. ASP .net:從.vb代碼註冊自定義控件
知道會制定一個測試的唯一方法。但是,真的,爲什麼它很重要?任何訪問註冊表的東西都不應該是時間關鍵的,所以無論是1微秒還是100毫秒,都不應該在程序的運行時間上產生可衡量的差異。 – 2011-05-17 14:17:41
@Jim - 我是自動寫入註冊表的應用程序,我需要撤消一些事情它在註冊表中(該供應商已覈實)做的事情。我的代碼時間緊迫,取決於這個第三方應用程序。所以那個應用程序對我來說是「黑盒子」的。 – SFun28 2011-05-17 14:32:00