我正在尋找最快的查找方式,如果列表,集,字典包含特定的關鍵字(字符串)。我不需要存儲任何數據,我只想知道我的關鍵字是否在列表中。c#.net Compact Framework 3.5中最快的字典查找
我想過像一些可能性:
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
}
查找會經常發生,具有非常快。 任何想法什麼是最快的方法來檢查一個值是否是給定的鍵列表之一?
爲什麼你沒有得到RedGate Profiler的副本並自己運行一些測試?它會給你一個很好的指示,看看會更快。有些事情會影響性能,如項目的順序和使用的算法以及列表的大小。我打算這樣做,但我的試用期已過期http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/ – 2011-04-12 14:47:46
哪種數據結構最快通常與問題的大小緊密相關,數據的冗餘度,查詢的分佈以及「垃圾」(即不匹配)查詢的可能性。我們在製作編譯器局部變量查找表時遇到的問題與您在快速查找Scrabble字典時遇到的問題完全不同。局部變量表很小並且查詢傾向於集羣;拼字遊戲字典很大,查詢很少重複。你能更詳細地描述問題的特徵嗎? – 2011-04-12 15:34:30