【发布时间】:2011-08-23 16:49:51
【问题描述】:
我在我的应用程序的时间关键部分计算 2 组排序数字的交集。这个计算是整个应用程序最大的瓶颈,所以我需要加快速度。
我尝试了很多简单的选项,目前正在使用这个:
foreach (var index in firstSet)
{
if (secondSet.BinarySearch(index) < 0)
continue;
//do stuff
}
firstSet 和 secondSet 都是 List 类型。
我也尝试过使用 LINQ:
var intersection = firstSet.Where(t => secondSet.BinarySearch(t) >= 0).ToList();
然后循环遍历intersection。
但是由于这两个集合都已排序,我觉得有更好的方法来做到这一点。请注意,我无法从集合中删除项目以使其更小。两组通常各包含大约 50 件物品。
请帮帮我,因为我没有太多时间来完成这件事。谢谢。
注意:我这样做了大约 530 万次。所以每一微秒都很重要。
【问题讨论】:
-
决定创建 UNION 问题,考虑到这是我实施的:stackoverflow.com/questions/7165152/…
标签: c# .net intersection sortedset