質問

並列メソッドを並行して行います。

パフォーマンスを向上させるために、独自の負荷分散とパーティション化を内部的に提供しますか?

もしそうなら、どのような状況を書きたいですか?パフォーマンスを改善するためにパーティショナークラスを使用して独自のパーティションを作成しますか?

役に立ちましたか?

解決

ルーチンは独自のパーティションを提供しました。

それらは「典型的な」シナリオに基づいていますが、特に異常な状況では、ガイダンスが必要になる場合があります。

たとえば、デフォルトのパーティションは次のとおりです IEnumerable<T> 実装(実装しない IList<T>)タスクごとの小さなグループから始めて、サイズがゆっくりと成長します。しかし、あなたがあなたを知っているなら IEnumerable<T> 一度に1つのアイテムをゆっくりと供給しますが、これはブロックを引き起こします。 Parallel クラスは、パーティションに十分な要素を受け取り、スケジュールするまで、次のアイテムで「待機」します。

独自のパーティショナーを提供することで、これを防ぎ、スループットを改善することができます。

カスタムパーティショナーが役立つ別の素晴らしい例は、ループアイテムごとに非常に少量の作業がある場合です。この場合、自分自身をパーティション化してパーティションで作業することで、不必要なオーバーヘッドが回避されます。これはで覆われています 方法:小さなループボディをスピードアップします MSDNのページ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top