简短问题:列表中有多少个元素可以像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]不会失败,但需要装箱
我问自己同样的问题,并运行基准来找出答案.我发现字典的速度已经超过了大约3-4个元素的查找列表.
根据字典的开销,这对我来说似乎很少,所以我查看是否有其他人得到了相同的结果,这似乎也是其他人发现的结果.http://dotnetperls.com/dictionary-time
这并不意味着,将几十个字典扔进你的代码中它们没有意义 - 还有一个内存开销和构建时间来处理.但是,如果您拥有一组体积适中的键控数据,请利用该结构.