我目前正在处理一个项目,需要管理大量唯一元素。每个元素有约20个属性,并且每个元素都有一个公共属性DateTime。
由于DateTime属性不是唯一的,所以我无法使用通用字典来存储我的数据。
目前我将这些元素放入ObservableCollection中,但是从集合中删除元素的性能非常慢,我等待了大约20秒才能从大约25,000个元素的集合中删除7,000个元素。
(搜索操作似乎非常高效,从300,000个未排序的元素中随机选择80个元素只需大约30毫秒)。
每个元素通过简单地返回DateTime.GetHashCode()来实现GetHashCode()方法。
我认为使用HashSet而不是ObservableCollection会显著提高我的性能,但似乎根本没有影响……
而使用通用字典则更糟糕……
如果元素具有“良好”的哈希函数(很少有相同哈希码的元素),那么HashSet不比ObservableCollection更强大吗?