2015-09-11 116 views
2

詞典和混合詞典有什麼區別? 兩次拿鑰匙和價值,哪一個更好根據表現?詞典和混合詞典的區別

混合詞典:

Dim myCol As New HybridDictionary() 
myCol.Add("Braeburn Apples", "1.49") 

詞典:

Dim dictionary As New Dictionary(Of String, Integer) 
dictionary.Add("Dot", 20) 

回答

1

HybridDictionary使用ListDictionary當設定小且Hashtable當集很大。

它一般比更高性能的一個Dictionary(至少當有少於10個項目,否則它應該是幾乎相同),但有一個命中的時候,當你去了10個項目的集合改變從ListHashtable(該列表必須被複制到散列表)。

HybridDictionary推薦的使用(與正常Dictionary)是集合時將會很小的大部分時間(再次,< 10個項目按照目前的實現),但有一個可能性,它會變得很大。

由於在使用中(與ListDictionaryHashTable相比,因爲Dictionary使用泛型),沒有什麼區別,它只是一個性能問題。

我的建議:除非特別需要,否則不要使用HybridDictionary

由於它沒有使用泛型,正如@adrianm在註釋中指出的那樣,如果使用值類型,它將導致裝箱和拆箱,這是以性能爲代價的。

而且,由於這只是一個很小的有點快了不到10個項目和10項不應該是一個大的性能上Hashtable連打...除非有什麼東西真的關鍵,沒​​有必要在使用它所有。

+0

由於HybridDictionary會爲值類型導致大量裝箱/取消裝箱操作,因此我認爲通用字典對於包含值類型的小集合也更快。在支持泛型的平臺上查看不需要在新代碼中使用HybridDictionary。 – adrianm

+0

@adrianm也是絕對正確的。我會將其添加到答案中 – Jcl