我试图使用Parallel.ForEach和ConcurrentBag更快地执行代码,但它仍然运行的时间很长(特别是在考虑到在我的场景中我也可能是1.000.000 ++ ):修改列表中的项目<T> fast
List<Point> points = new List<Point>();
for(int i = 0; i<100000;i++) {
Point point = new Point {X = i-50000, Y = i+50000, CanDelete = false};
points.Add(point);
}
foreach (Point point in points) {
foreach (Point innerPoint in points) {
if (innerPoint.CanDelete == false && (point.X - innerPoint.X) < 2) {
innerPoint.Y = point.Y;
point.CanDelete = true;
}
}
}
描述你想达到什么目的。即使对于N> = 20000,O(N^2)也太多了。 – 2011-04-30 19:31:51
如果你真的要在你的集合中有超过一百万个项目,你可能想要开始寻找比嵌套循环更好的搜索算法......是否将它分散到少数几个并行化的核心,它仍然会是10^12次迭代,这是很多的(你会意识到,这将删除,例如,一个点的线,无论多长时间,只要点是彼此足够接近,对吧?) – 2011-04-30 19:32:22
我需要在每个_X_上使用__ __ __ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _点所有点,而_X_可以与x 1-x 2
2011-04-30 19:37:57