【问题标题】:What is performance of ContainsKey and TryGetValue?ContainsKey 和 TryGetValue 的性能如何?
【发布时间】:2011-08-04 18:44:19
【问题描述】:

我正在准备面试,一些明显的面试问题(例如计算字符串中字符的频率)涉及将所有字符放入 Hashtable/Dictionary 以获得算法的 O(n) 运行时间。我的问题是,使用ContainsKeyTryGetValue 检查是否已将密钥插入哈希表对性能有何影响?对于使用 ContainsKeyTryGetValue 的此类问题,我还能使用 O(n) 算法吗?

【问题讨论】:

    标签: c# .net algorithm big-o


    【解决方案1】:

    假设没有太多冲突的良好哈希,每个都是 O(1) 操作。

    至于这些操作是如何工作的......我建议你阅读hash tables

    【讨论】:

    • @alexD -- 请记住,在最佳情况下是 O(1)。具有世界上最差散列算法的散列表会将每个项目放入单个链表存储桶或类似存储桶中,并在对重复项进行排序时接近 O(N)。 :)
    • TryGetValue 似乎更快,因为 ContainsKey 需要两次哈希查找才能匹配 - 测试然后检索。
    • @Chris:是的,我希望它更快——但在算法复杂性方面并非如此,因为常数因素并不重要。
    猜你喜欢
    • 2012-03-12
    • 2017-02-14
    • 2011-08-18
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2023-03-10
    相关资源
    最近更新 更多