小编Ehs*_*san的帖子

C#HashSet <T>搜索性能(与ObservableCollection <T>相比)?

C#的通用HashSet <T>搜索性能应该是O(1),并且ObservableCollection <T>的搜索性能应该是O(n).

我有大量的唯一元素,每个元素都有一个不唯一的DateTime属性.

每个元素只需返回其DateTime.GetHashCode()即可计算其HashCode.

现在我想得到我的数据的一个子集,例如,所有元素的日期都在2012年3月到2012年6月之间.

    var result = from p in this.Elements
                 where p.Date >= new DateTime(2012, 03, 01) &&
                       p.Date <= new DateTime(2012, 30, 06
                 select p;
Run Code Online (Sandbox Code Playgroud)

如果我在300.000个元素的集合上运行此LINQ查询,则返回给定范围内的80个元素需要大约25毫秒 - 如果我使用HashSet <T>或ObservableCollection <T>则无关紧要.

如果我手动遍历所有元素并检查它们,则需要相同的时间,约25毫秒.

但我确实知道在给定范围内的所有日期的HashCode.是否可以从我的HashSet <T>获取具有给定HashCodes的所有元素?我觉得那会快得多......

是否可以加快LINQ查询?我假设它没有利用我的HashSet <T>的特殊能力?

linq performance observablecollection hashset

6
推荐指数
2
解决办法
4782
查看次数

标签 统计

hashset ×1

linq ×1

observablecollection ×1

performance ×1