字典与Hashtable内存使用情况

时间:2011-07-18 22:29:19

标签: c# dictionary hashtable

我在这里看到Hashtable和Dictionary几乎完全相同,除了避免装箱/拆箱的优点。

使用Ants Profiler我使用以下结构测量一个非常简单的应用程序:

class Node
{
    Dictionary<string, Node> Children = new Dictionary<string, Node>();
}

    class NodeOld
    {
        Hashtable Children = new Hashtable();
    }

好的,第一个1.5Million实例的列表大约需要140Mb,而第二个需要超过700Mb(64位系统)。

所以,实施方面存在巨大差异,不是吗?

Ants Profiler在这个大尺寸的例子中推出了大量的Hashtable + Bucket对象......

那么,如果你要坚持1.1,是否有一个等效的(精通内存的)字典选项?

1 个答案:

答案 0 :(得分:1)

即使我被困在.NET 1.1上,我也不会将150万个实例存储到内存中,所以我不会在乎。 Hashtable可能是实现在.NET 1.1中内存消耗和速度方面可以获得的散列表的最佳数据结构。当然,如果您更详细地解释了您的场景,并且您已经确定Hashtable实际上是您的应用程序的瓶颈,那么可能会有更好的解决方案。