字典(散列表)和列表查找之间的权衡点

Mik*_*ike 2 c# search

简短问题:列表中有多少个元素可以像List O(n)那样进行线性搜索,然后比字典O(1)更快?

我似乎记得在大学(和高中)比较搜索技术(二元与线性)时总是存在线性更快的点.那是O(n)vs O(log)

我不能在这里画图.但是对于不断的表现必须有一些头脑.所以问题是如果我有10个项目List.Find然后更有意义

if (Dictionary.Contains(x))
    value = Directiory[x]
Run Code Online (Sandbox Code Playgroud)

或者Hashtable,其中value = Hashtable [x]不会失败,但需要装箱

ser*_*hym 5

我问自己同样的问题,并运行基准来找出答案.我发现字典的速度已经超过了大约3-4个元素的查找列表.

根据字典的开销,这对我来说似乎很少,所以我查看是否有其他人得到了相同的结果,这似乎也是其他人发现的结果.http://dotnetperls.com/dictionary-time

这并不意味着,将几十个字典扔进你的代码中它们没有意义 - 还有一个内存开销和构建时间来处理.但是,如果您拥有一组体积适中的键控数据,请利用该结构.