Словарь против использования памяти Hashtable - PullRequest
6 голосов
/ 19 июля 2011

Я читал здесь, в SO, что Hashtable и Dictionary в значительной степени одинаковы, за исключением преимуществ, связанных с отсутствием блокировки / распаковки.

Используя Ants Profiler, я измеряю очень простое приложение со следующими структурами:

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

и

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

Хорошо, список из 1,5 миллионов экземпляров первого занимает около 140 МБ, а второму требуется более 700 МБ (64-битная система).

Итак, есть огромная разница в реализации, не так ли?

Ants Profiler представляет огромное количество объектов Hashtable + Bucket на примере большого размера ...

Итак, есть ли эквивалентная (экономная память) опция для словарей, если вы придерживаетесь 1.1?

1 Ответ

1 голос
/ 19 июля 2011

Даже если бы я застрял в .NET 1.1, я бы не стал хранить 1,5 миллиона экземпляров в памяти, поэтому мне было бы все равно. Hashtable, вероятно, является лучшей структурой данных, реализующей хеш-таблицу, которую вы можете получить с точки зрения потребления памяти и скорости в .NET 1.1. Конечно, если вы объяснили свой сценарий более подробно и определили, что Hashtable на самом деле является узким местом для вашего приложения, возможно, найдутся более эффективные решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...