Пользовательский поставщик ресурсов asp.net, использующий Dictionary / SortedList / SortedDictionary? - PullRequest
0 голосов
/ 21 августа 2011

Этот вопрос, возможно, задавался в разных форматах, но для моего текущего требования кто-то может предложить, какой из них лучше ...

В ASP.Net у меня есть собственная реализация локальных и глобальных ресурсов, я 'm хранит пару ключ-значение в статическом объекте Dictionary. Всего может быть не более 10 000 значений (все страницы).Когда приложение asp.net загружает страницу, оно сохраняет значение в моем статическом словаре.Когда страница снова посещается вместо чтения значения из файла ресурсов, она подается из статического объекта Dictionary.

Мой вопрос связан с соображениями производительности. Словарь является лучшим, или я должен использовать SortedList / SortedDictionary

1 Ответ

1 голос
/ 21 августа 2011

Сортировка увеличивает накладные расходы, поэтому, если вам не нужна сортировка, вы просто ищете одну страницу из словаря на основе ключа, тогда я бы придерживался словаря.

Исходя из вашего сценария,Я предполагаю, что скорость поиска - самая важная проблема.

SortedDictionary использует красно-черное дерево, двоичное дерево, которое поддерживает упорядочение коллекции при добавлении / удалении элемента.Поэтому, если вы ищете диапазоны значений, в которых важно расположение одного элемента в коллекции относительно другого элемента, то SortedDictionary имеет смысл.Там, где вам может понадобиться доступ к коллекции с использованием индекса (например, массива) вместо ключа, SortedList имеет смысл.

Словарь использует хеш-таблицу для хеширования и хранения ключей, которые он использует для поиска, поэтомуэто делает поиск случайного единственного элемента очень быстрым.Это соответствует вашему сценарию.

SortedDictionary работает в порядке O (log n) для добавления / поиска, где Dictionary работает на O (1) для добавления / поиска.

См. сравнение коллекций System.Collections.Generic .

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