3

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

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 项目在集合中排序),那也将不胜感激。

编辑:“高效排序”-> 尽可能快。

谢谢

4

1 回答 1

6

根据这个页面

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

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

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

于 2012-05-24T08:29:11.527 回答