Исполнение словаря C#

Я использую Словарь, чтобы хранить данные и буду кэшировать их. Я хотел бы избежать проблем памяти сервера и иметь хорошую производительность путем ограничения размера Словаря <>, или в размере или в количестве записей.
Каков лучший метод выполнения этого? Есть ли другой класс, который я должен рассматривать кроме Словаря?

5
задан Sumon Banerjee 17 February 2014 в 13:19
поделиться

5 ответов

Есть несколько других классов, которые вы можете выбрать, например

, вы можете просмотреть варианты, посмотрев в System.Collections.Generic Пространство имен.

Это очень хороший пост с описанием плюсов и минусов для большинства классов коллекций в MSDN

Если вас не устраивает то, что предоставляют эти классы, вы можете пойти по своему усмотрению. создайте собственный класс коллекции или создайте собственный словарь .

вам нужно будет унаследовать свой собственный словарь от интерфейса IDictionary и других классов / интерфейсов, или вы можете написать все с нуля.

Вот подпись для Класса словаря в MSDN

[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, 
    ICollection<KeyValuePair<TKey, TValue>>,
    IEnumerable<KeyValuePair<TKey, TValue>>, 
    IDictionary, ICollection, IEnumerable,
    ISerializable, IDeserializationCallback
2
ответ дан 14 December 2019 в 01:03
поделиться

Следует иметь в виду, что при инициализации словаря вы можете установить начальную емкость. Если вы знаете, насколько велик будет ваш список, установите для него правильный размер, и у вас не будет «потраченного впустую» места. Если вы не укажете емкость, она установит начальную емкость по умолчанию и при необходимости изменит размер / увеличится, что снизит производительность.

0
ответ дан 14 December 2019 в 01:03
поделиться

Вам не нужно ограничивать размер словаря для достижения хорошей производительности.

Как сказано в документации:

Получение значения по его ключу является очень быстро, близко к O(1)

5
ответ дан 14 December 2019 в 01:03
поделиться

Вам нужно будет создать свой собственный класс, унаследованный от класса Dictionary. Переопределите методы Add и set Item, чтобы ограничить количество записей при добавлении объектов.

1
ответ дан 14 December 2019 в 01:03
поделиться

"Кэш без политики истечения срока действия - это просто утечка памяти".

(Извините, без атрибутов, так как я не знаю, кто первым это сказал.)

1
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: