【发布时间】:2011-10-26 05:39:21
【问题描述】:
我尝试比较哈希表查找和线性搜索的性能。我创建了一个包含 1000 个项目的哈希表,发现在哈希表中查找所需的时间为 0.0002(我使用DateTime.Now 找出查找前后的系统时间并减去它们)。我在一个数组中有相同的 1000 行,并使用线性搜索查找相同的值。结果证明它比哈希表查找所花费的时间要少。
我认为哈希表比线性搜索更快。它是如何工作的?
【问题讨论】:
-
1000 实在是太小了,hash table 的优势在项数多的时候就体现出来了。
-
@kd7:不,这根本不是问题。问题是他只进行了一次查找,并且可能该项目恰好位于数组的前面。
-
从 DateTime.Now 中得到的最小增量在绝大多数机器上是 0.0156 秒。如果你杀死 3 只山羊并牺牲你最大的山羊,那么你可能会得到 0.0010。鉴于您测量了 0.0002 并且 得到了违反直觉的结果,更大的可能性是您的测试完全无效。简单的假设,因为您没有给任何人验证它的机会。
-
How does a hash table work? 的可能重复项
-
@Joe,我不认为这是重复的,因为这个问题是理论;这个问题涉及实际实现 - .Net
System.Collections.Hashtable
标签: .net search hashtable linear-search