簡體   English   中英

c#.net Compact Framework 3.5中最快的字典查找

[英]Fastest Dictionary lookup in c# .net Compact Framework 3.5

我正在尋找最快的方法來查找List,Set,Dictionary是否包含特定的關鍵字(字符串)。 我不需要存儲任何數據,我只想知道我的關鍵字是否在列表中。

我想到了一些可能性:

Dictionary<string, bool> myDictionary = new Dictionary<string, bool>();
if (myDictionary.ContainsKey(valueToSearch))
{
    // do something
}

但我不需要價值。

string[] myArray = {"key1", "key2", "key3"}
if (Array.IndexOf(myArray, valueToSearch) != -1)
{
    // do something
}

然后我發現:

List<string> list = new List<string>();
if (list.Contains(valueToSearch))    
{
    // do something
}

查找將經常發生,並且必須非常快。 知道什么是檢查某個值是否等於給定鍵列表之一的最快方法?

在標准集合類型中, Dictionary是最快的,因為我認為你在緊湊框架中沒有HashSet<T> 另外兩個進行順序搜索。

通常,字典查找是這類問題的常用解決方案,只要您的鍵是良好的哈希值,在字典的查找表中得到一些均勻的分布。

但是,在某些情況下,列表查找似乎運行得更快,具體取決於數據的排序方式以及您正在查找的內容。

最好的方法是運行每個案例的個人資料,看看哪個表現更好。

我同意安迪的觀點。 您還可以查看SortedList它本質上是一個按其鍵排序的字典。 如果它已經排序,應該更快地搜索...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM