ParallelEnumerable.Range
と の違いは何Enumerable.Range(...).AsParallel()
ですか?
ParallelEnumerable.Range
範囲パーティションを作成します(各アイテムのCPU時間が等しい操作に最適)
asはまたはEnumerable.Range(...).AsParallel()
として実行される可能性がありますrange
chunk
パフォーマンスに違いはありますか?いつどちらを使うべきですか?
ParallelEnumerable.Range
と の違いは何Enumerable.Range(...).AsParallel()
ですか?
ParallelEnumerable.Range
範囲パーティションを作成します(各アイテムのCPU時間が等しい操作に最適)
asはまたはEnumerable.Range(...).AsParallel()
として実行される可能性がありますrange
chunk
パフォーマンスに違いはありますか?いつどちらを使うべきですか?
反復するにつれてCPU圧力が増加する操作を実行している場合は、反復AsParallel
するときに調整を行うことができるため、使用する必要があります。ただし、並行して実行する必要があり、操作を繰り返してもプレッシャーが発生しないParallelEnumerable.Range
場合は、作業をすぐに分割できるため、を使用してください。
詳細な説明については、この記事を参照してください。
したがって、各反復で複雑な計算を実行していると仮定します。入力値が大きくなるにつれて、計算に時間がかかるため、AsParallel
調整できるように使用する必要があります。ただし、レジストリ設定の設定などで同じオプションを使用すると、それに関連するオーバーヘッドがAsParallel
必要ないため、パフォーマンスが低下します。