1

Parallel Extensions を使用して計算アプリケーションを高速化しようとしています。私はそれに慣れていないので、メインの foreach ループを Parallel.ForEach に置き換えました。しかし、計算はより遅くなりました。並列拡張のパフォーマンスが低下する一般的な理由は何ですか?

ありがとう

4

1 に答える 1

1

いくつかの条件が満たされた場合にのみ、並列で実行することによって改善が得られます。まず、なぜ速度の向上が期待できるのでしょうか。

パフォーマンスの向上が期待できる場合は、

  1. サーバーへのTCP接続の確立やデータのダウンロードなど、リソースを待機している順次操作がある場合、これは並行して実行する方が高速な場合があります。
  2. 複数のプロセッサ/コアがある場合は、1つのコアを100%使用し、他のコアを使用しないよりも、コアで各タスクを実行する方が速い場合があります。

1つのコアと多数の小さな操作がある場合、コンテキストスイッチに必要な追加の作業と、並列スレッドの管理に必要なリソースの割り当てが利点を上回る場合があります。

あなたがあなたの特定のケースを説明するならば、私たちはあなたの例でそれがなぜ遅いのか推測することを試みることができます。

実際、並列コンピューティングに関するWikiPediaエントリには、これに関するいくつかの優れた情報があります。http://en.wikipedia.org/wiki/Parallel_computingを参照してください。

アムダールの法則に特に注意を払いたいと思います。

于 2010-05-28T08:12:56.070 に答える