字典与Hashtable内存使用情况

pab*_*blo 6 c# dictionary hashtable

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

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

class Node
{
    Dictionary<string, Node> Children = new Dictionary<string, Node>();
}
Run Code Online (Sandbox Code Playgroud)

    class NodeOld
    {
        Hashtable Children = new Hashtable();
    }
Run Code Online (Sandbox Code Playgroud)

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

那么,实施方面存在巨大差异,不是吗?

Ants Profiler在大型示例中推出了大量的Hashtable + Bucket对象......

那么,如果你要坚持使用1.1,那么字典是否有相当于(精通内存的)选项?

Dar*_*rov 1

即使我停留在 .NET 1.1 上,我也不会在内存中存储 150 万个实例,所以我不会关心。就内存消耗和速度而言,哈希表可能是在 .NET 1.1 中实现哈希表的最佳数据结构。当然,如果您更详细地解释了您的场景,并且您已经确定哈希表实际上是您的应用程序的瓶颈,那么可能会有一些更好的解决方案。