我正在使用字典來存儲數據,並將緩存它。我希望避免服務器內存問題,並通過限制字典大小或條目數限制詞典的大小來獲得良好的性能。
這樣做的最好方法是什麼?除了詞典以外,我還有其他課程嗎?C#字典性能
C#字典性能
回答
還有其他幾類可以從像
你可以通過查看System.Collections.Generic命名空間查看選項中進行選擇。
他們是一個很好的職位,describibg優點和所有大部分集合類的優缺點在MSDN
如果你沒有被什麼這些類提供滿意的,你可以去你自己的收藏課或者設計一個你自己的custom Dictionary
。
您需要繼承自定義字典fron 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
您不需要限制字典的大小即可獲得良好的性能。
由於文件說:
通過使用它的關鍵是檢索值 非常快,接近O(1)
如果允許字典無限地增長,你能結束使用所有可尋址內存。依賴於硬件,您可能會或可能不會遇到性能問題,因爲在此之前就已經交換了很久。 – 2010-04-30 13:45:56
您需要創建自己的類從字典類繼承了Dictionary class簽名。覆蓋Add和Set Item方法,以限制添加對象時的條目數量。 「
」沒有過期策略的緩存只是內存泄漏。「
(對不起,未歸屬的,因爲我不知道是誰第一個說的。)
緩存確實有一個非滑動過期策略和一個依賴項,只是想確保它在該過期窗口內不會變得太大。 – derek 2010-04-30 15:34:04
我不需要排序。字典對我來說效果很好,因爲我可以通過鍵獲得價值。我主要關心的是字典可能增長的規模。 – derek 2010-04-30 13:38:07
我剛剛給你一些更多的選擇來看看。爲什麼不用你自己的字典和'overright'來生成它的增長規則呢? – 2010-04-30 13:43:32
偉大的鏈接。看起來我將不得不創建一個自定義類。 – derek 2010-04-30 14:22:26