特定の操作が完了するまでにかかる時間を調査しています。操作は次のようなものです。
Parallel.ForEach(items, item => SaveScheme(item));
SaveScheme
メソッドはデータベースを操作します。いくつかのクエリを実行し、情報を操作します。コレクション内の要素の量はitems
十分に大きくなる可能性があります。
この操作を実行すると、完了するまでに約 20 ~ 40 秒かかります。しかし、プロファイリングをオンにして実行すると、わずか 3 秒しかかかりません!
この問題に関する情報は見つかりませんでした。私の唯一の推測は、プロファイリングParallel.ForEach
を使用すると、使用しない場合よりも多くのスレッドが作成されるということですが、確かなことはわかりません。
では、なぜこのようなことが起こるのでしょうか? また、プロファイリングを行わずにアプリケーションを実行したときに、このパフォーマンスをどのように達成できるのでしょうか?
アップデート。Parallel
これとは何の関係もありません: シンプルなforeach
代わりにテストしましたが、操作はまだ 3 秒で完了します!