Parallel Extensions を使用して計算アプリケーションを高速化しようとしています。私はそれに慣れていないので、メインの foreach ループを Parallel.ForEach に置き換えました。しかし、計算はより遅くなりました。並列拡張のパフォーマンスが低下する一般的な理由は何ですか?
ありがとう
Parallel Extensions を使用して計算アプリケーションを高速化しようとしています。私はそれに慣れていないので、メインの foreach ループを Parallel.ForEach に置き換えました。しかし、計算はより遅くなりました。並列拡張のパフォーマンスが低下する一般的な理由は何ですか?
ありがとう
いくつかの条件が満たされた場合にのみ、並列で実行することによって改善が得られます。まず、なぜ速度の向上が期待できるのでしょうか。
パフォーマンスの向上が期待できる場合は、
1つのコアと多数の小さな操作がある場合、コンテキストスイッチに必要な追加の作業と、並列スレッドの管理に必要なリソースの割り当てが利点を上回る場合があります。
あなたがあなたの特定のケースを説明するならば、私たちはあなたの例でそれがなぜ遅いのか推測することを試みることができます。
実際、並列コンピューティングに関するWikiPediaエントリには、これに関するいくつかの優れた情報があります。http://en.wikipedia.org/wiki/Parallel_computingを参照してください。
アムダールの法則に特に注意を払いたいと思います。