2009-12-16 77 views
2

Dictionary.ContainsKey/Value和检查某个键/值的foreach循环之间是否存在速度差异?在Dictionary.ContainsKey/Value和检查某个键/值的foreach循环之间是否存在速度差异

+2

为什么你不试试并告诉我们? – Rik 2009-12-16 09:25:03

+1

为什么没有人试过并告诉我们!很多意见,没有数据。 – 2009-12-16 09:32:49

+0

我试过了,做了两个方法,一个使用containsKey和一个for循环,并在1000000次迭代循环中使用它们(当时一个循环),for循环的循环更快一点 – Omu 2009-12-16 09:35:37

回答

8

ContainsKey更快:

此方法接近的O(1)的操作。

ContainsValue就像是一个foreach循环。

该方法执行线性搜索;因此,平均执行时间与Count成正比。也就是说,这个方法是一个O(n)操作,其中n是Count。

+0

就这样!我认为它是在后台实现的二进制搜索... – Goran 2009-12-16 09:42:32

4

是的。

ContainsKey几乎是O(1)。至于ContainsValue,我无法确定,但我认为循环没有多大区别。

相关问题