什么是字典压缩支持?

时间:2009-04-21 14:01:50

标签: c#

“这是没有任何压缩支持的字典的实现。”

此引用来自此处:http://blogs.msdn.com/jaredpar/archive/2009/03/03/building-a-weakreference-hashtable.aspx

我知道jaredpar是这里的会员,并在C#部分发布帖子。什么是“字典压缩支持”?我假设它是一种优化或缩小的方法?但是如何(如果是这样的话)?

由于

1 个答案:

答案 0 :(得分:4)

对于那个特定的帖子,我提到缩小字典,以便为非收集元素的数量提供更合适的大小。

在引擎盖下,大多数哈希表都由一个大型数组支持,该数组通常指向另一个结构,例如链表。该数组以初始化大小开始。当添加到散列表的元素数超过某个阈值(比如数组中元素数量的70%)时,散列表将展开。这通常涉及以两倍大小创建新数组并将值重新添加到新数组中。

弱引用哈希表的一个问题/特征是随着时间的推移收集元素。随着时间的推移,这可能会导致一些浪费的空间。想象一下,你添加了足够的元素来完成这个数组倍增过程。随着时间的推移,其中一些被收集,现在剩余的元素可以适合以前的数组大小。

这不一定是坏事,但浪费了空间。压缩是一个过程,在这个过程中,您实际上将哈希表的基础数据结构缩小为更合适的数据大小。