1

PLINQ を使用すると、C# の並列クエリは、構築方法に応じて順序付きまたは順序なしになります。PLINQ での順序の保持に関する MSDN here に関する情報がいくつかあります。

これは紛らわしく、管理が難しいと思います。私の考えでは、順序が重要なコレクションはシーケンスであり、順序が重要でないコレクションはバッグです (または、重複がない場合は、setである可能性があります)。

バッグとシーケンスの操作は異なり、特に並列アルゴリズムとして実装されている場合、複雑さの特徴が異なります。

言い換えれば、順序付けられたコレクションと順序付けられていないコレクションは異なるタイプであるべきであり、これにより物事が単純化されると思います。PLINQ のすべてが単に "ParallelQuery()" として統合される理由はありますか?

4

1 に答える 1

2

PLINQ のすべてが単に "ParallelQuery()" として統合される理由はありますか?

もっと簡単です。2 種類が可能だったと思いますが、かなりの費用がかかります。そして、使いやすくなるでしょうか?

Parallel でシーケンスを処理すると、デフォルトで Order が放棄されます。シーケンスの再確立にはコストがかかり、追加の手順が必要になることに注意してください。

しかし、必要な場合は、.AsOrdered()最初にデータを別のコレクションにコピー (!) するよりも、 を追加する方がはるかに苦労しないように思えます。

于 2012-04-07T22:11:59.983 に答える