以下PLINQ代码没有任何改进

时间:2012-05-24 08:16:13

标签: c# linq sorting plinq

我没有看到使用以下代码处理速度的任何改进:

IEnumerable<Quote> sortedQuotes = (from x in unsortedQuotes.AsParallel()
                                           orderby (x.DateTimeTicks)
                                           select x);

在顺序版本上:

IEnumerable<Quote> sortedQuotes = (from x in unsortedQuotes
                                           orderby (x.DateTimeTicks)
                                           select x);

我在这里遗漏了什么吗?我将源集合中的项目数量从数千个变为数千万个,并且没有大小显示并行版本即将发布。

任何提示赞赏。顺便说一句,如果有人知道更快速的排序方式(给定我指定的项目变量类型(包含项目在集合中排序的长DateTimeTicks),这也是值得欣赏的。

编辑:“有效排序” - &gt;尽可能快地。

由于

1 个答案:

答案 0 :(得分:6)

根据this page

  

如果你的查询中有一个排序,那么将使用stop-and-go代替,因为对排序的输出进行流水线操作是浪费的。排序表现出极高的延迟[...],因此PLINQ更愿意将所有处理能力用于尽快完成排序。

您的查询包含排序,选择不计算。因此PLINQ引擎将按顺序执行它。

当排序是较大查询的一部分时,您只能期待一些改进。