0

私は、割り当てられたアプリケーションの一部を非常に遅くしている原因を突き止めるという任務を負っていました。Redgate のAnts Profilerを試してみることにしました。それを実行すると、ホット スポットの大部分は、元の開発者がParallel.For()ループとして記述したループに含まれていました。

どのような効果があるかを確認するために、それらを標準の for ループに置き換えたところ、プロファイラーの速度が数秒速くなりました。ただし、プロファイラーを使用せずに、DateTime.Nowそのようなループの開始と終了の単純な違いを使用してテストすると、Parallel.For()ループが 2 倍以上高速であることが示されます。

Parallel クラスを使用しようとすると、プロファイラーを介してコードを実行すると人為的なボトルネックが生じる可能性はありますか?

4

1 に答える 1

1

問題は、並列処理を行う場合、プロファイラーがすべてのスレッドをサンプリングするため、通常のプロファイラーのパフォーマンス低下がスレッド数が多いほど大きくなることです。

于 2012-07-20T13:18:29.763 に答える