LoginSignup
7
6

More than 5 years have passed since last update.

C# のパラレル処理ループ Parallel.For の MaxDegreeOfParallelism は何個ぐらいで十分?

Last updated at Posted at 2015-04-17

https://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel_methods(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.threading.tasks.paralleloptions.maxdegreeofparallelism.aspx

と言うわけでパフォーマンスを比較してみました。
注意:コンパイルはデバッグモードなので、リリースモードのコンパイルとパフォーマンスは異なります。
またCPUクロック数、コア数、その他様々な環境に起因して処理速度は大きく変化します。

今回使用した CPU は Core i7 2600k 4.4Ghz動作(定格動作です)、物理コア数4、HTで 仮想8コアです。

データ生成数 1万件の人物情報生成(名前、住所、年齢、年収、性別など16のカラム数を持つ人物情報を1万件生成)
並行処理数:1個 / 処理時間:3.7694053秒
並行処理数:2個 / 処理時間:1.0317924秒
並行処理数:3個 / 処理時間:0.7661187秒
並行処理数:4個 / 処理時間:0.7430526秒

なので、並行処理数 3~4 で十分ではないでしょうか。
並行処理を全く使ってない環境の場合、2 に設定するだけでも半分以下の処理時間になるので、
劇的なパフォーマンス改善が望めると思います。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6