【发布时间】:2013-10-14 16:56:08
【问题描述】:
我有 8000 个键/值对。我读到哈希速度是 O(1),但是在 key 上发生冲突时,它将变成 O(n),其中 n 是 log(item number),如果我的概念有误,请纠正我。
那我想如果我用多个表的话,说把1到3000放到hashtable1,3001到6000放到hashtable1,那么性能应该有更高的机会到2*O(1)吧?此外,如何确定表 1、2 等的最佳尺寸?
另外,我读过帖子说如果我不使用多线程访问哈希图,使用哈希图会更好?是真的吗?
【问题讨论】:
-
在分析器证明它是瓶颈之前不要想太多,所以对所有键使用一个 Map。是的,使用
HashMap而不是Hashtable类。 -
您可以通过事先确定确切的数量(或足够接近的东西)或条目将是多少(并相应地设置大小+负载因子)来确定最佳大小。当然这很简单..
-
我猜是这样,但我想知道这个概念思维是否正确?谢谢!
-
过早优化,是万恶之源
-
对于编辑者,只能使用"`" char来格式化成code,嗯,code。 O(N) 不是代码。