【发布时间】:2011-10-19 02:31:46
【问题描述】:
在许多情况下,为了简单起见,我宁愿将 List 或 HashSet 与 LINQ 结合使用,而不是使用 Dictionary。但是,我通常坚持使用 Dictionary,因为我认为 Dictionary 会因为它的哈希表实现而具有更高的性能。
例如:
当我在 LINQ 中执行此操作时:
bool exists = hashset.Any(item => item.Key == someKey);
与使用字典的以下等效项相比,我是否会失去显着的性能?
bool exists = dictionary.ContainsKey(someKey); // an O(1) operation
LINQ 查询是否以某种方式进行了优化,使其成为对字典的合理选择?或者上面的 Any() 是一个普通的 O(n) 操作,不管它是在哪种类型的集合上执行的?
【问题讨论】:
-
你传递给它一个委托在每个项目上执行(直到它在这种情况下返回 true),所以是的,字典查找要快得多(除了一些非常边缘的情况)
标签: c# performance linq data-structures