0

Parallel.For in の代わりにforループを使用することになっている場所を誰かが提案できますか。ネット 4.0 フレームワーク?

特定の長いアルゴリズムで for と Parallel.For を使用して小規模な PoC を実行した結果、シングル コア環境でも Parallel.For が非常に有利です。

.NET 4.0 Frameworkのforループを単純に無視できますか?

4

1 に答える 1

4

ここで考慮すべき多くの要因があります。

  • ループ内のコードは同時アクセスをサポートするように書かれていますか? スレッドセーフですか?そうでない場合:それは大きな問題です
  • すべてのスレッドが単一のリソース (UI など) への専用/同期アクセスをすぐに必要とする場合、同時実行から得られるものは何もありません。
  • このマシンで他に何が起こっていますか?これが Web サーバーの場合、1 つの要求で多くのコアをハイジャックしない方がよい場合があります。
  • 逆に、これがクライアント側のアプリケーションである場合は、多くのコアを使用し、理想的には UI スレッドをできるだけ早く解放します。
  • 作業の CPU バウンドはありますか? IOバウンド?何?単一のディスク スピンドルへの並列アクセスは、状況を悪化させる可能性があります。
  • スレッドにはオーバーヘッドがあります。並行性により、実行される総作業量が増加します -経過時間を短縮することを目的としています
  • ローカルで行われますか、それとも別のサーバーで行われますか? もしそうなら、その他のサーバーのスレッドモデルは何ですか?

ほとんどの場合、for/foreachで問題ありません。

于 2013-03-15T11:11:46.780 に答える