有序和无序并行集合在C#中应该有不同的类型吗?

时间:2012-04-07 21:55:01

标签: c# collections plinq parallel-processing

使用PLINQ C#并行查询是有序的还是无序的,具体取决于您构建它们的方式。有一些信息on MSDN here regarding order preservation in PLINQ

我发现这令人困惑和难以管理。在我认为订单重要的集合中,序列和订单不重要的集合是 bags (或者如果没有重复,那么它们可能是集合)。

对行李和序列的操作是不同的,并且具有不同的复杂性特征,特别是当实现为并行算法时。

换句话说,我认为有序和无序集合应该是不同的类型,这样可以简化事情。是否有理由将PLINQ中的所有内容统一为“ParallelQuery()”?

1 个答案:

答案 0 :(得分:2)

  

是否有理由将PLINQ中的所有内容统一为“ParallelQuery()”

这更简单。我想有两种类型是可能的,但需要付出相当大的代价。它会更容易使用吗?

当您在Parallel中处理序列时,默认情况下您会放弃Order。你应该意识到重建序列是昂贵的,它应该需要一些额外的步骤。

但是当你需要它时,添加.AsOrdered()似乎比将数据首先复制(!)到另一个集合要痛苦得多。