【问题标题】:Detecting Rehashes or Collisions in Hashtable or Dictionary检测哈希表或字典中的重新散列或碰撞
【发布时间】:2012-06-01 00:54:17
【问题描述】:

我正在学习 .NET Hashtable 类,并想尝试各个方面...

  • 给定数据集中发生了多少次冲突(重新哈希)
  • 散列表的扩展对于多线程访问是否安全?
  • 我的哈希表的当前负载系数是多少?

我如何试验或学习关于给定哈希表或字典的上述信息

【问题讨论】:

    标签: c# .net dictionary hashtable


    【解决方案1】:

    Hashtable 的线程安全性在MSDN 中说明。如果只有一个线程写入Hashtable 是线程安全的,这必须包括扩展。

    现在,使用 Reflector 进行一些挖掘:

    负载因子存储在 loadFactor 私有字段中,如果您想检查其值,可以使用反射访问该字段。

    重新哈希更难。这些不是Hashtable 的内部状态,它通过重新散列并且只能通过重新散列以可检测的方式进行修改。因此,您将不得不在这里查看其他选项,例如使用 Reflector 创建您自己的相同 Hashtable 实现,然后添加一些代码来计算重新散列。如果您这样做,您也可以将负载系数作为属性公开,以使您的生活更轻松。

    【讨论】:

    • 除了重新散列之外,还有什么可以修改内部状态?如果我观察自己与 Hashtable 的交互,是否足以推断出发生了什么? ...我会尝试使用 Reflector 来回答这个问题,并将结果发布在这里。
    • 该链接似乎表明通过同步支持多个写入。
    • @makerofthings7,请您在此处发布您的发现好吗?
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 2015-12-23
    • 2012-12-25
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多