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);

ここで何かが足りませんか?ソースコレクションのアイテム数を数千から数千万に変更しましたが、Parallelバージョンが先行していることを示すサイズはありませんでした。

ヒントをいただければ幸いです。ちなみに、誰かがより効率的に並べ替えるより速い方法を知っているなら(私の示されたアイテム変数タイプ(コレクション内でアイテムが並べ替えられる長いDateTimeTicksを含む)を与えられれば、それもありがたいです。

編集:「効率的に並べ替える」->できるだけ速く。

ありがとう

4

1 に答える 1

6

このページによると、

クエリに並べ替えがある場合は、並べ替えの出力をパイプライン化するのは無駄なので、代わりにストップアンドゴーが使用されます。ソートは非常に高いレイテンシーを示すため[...]、PLINQはすべての処理能力を可能な限り迅速にソートを完了することに専念することを好みます。

クエリには並べ替えのみが含まれ、選択はカウントされません。したがって、PLINQエンジンはそれをシーケンシャルとして実行します。

並べ替えがより大きなクエリの一部である場合にのみ、ある程度の改善が期待できます。

于 2012-05-24T08:29:11.527 に答える