やりたいこと
以前の記事がこちらになります。C# Parallel 入門
前回の方法では、for文の中の計算結果を足し合わせるということをしていたのですが、
もう少し複雑なことがしたくなりました。
1からNまで順番に数字を調べていって、それが目当ての数字だったら、
Listに登録することが目的です。
コード
// 並列化 object obj = new object(); Parallel.For>(1, endNum, () => new List
(), (Int64 num, ParallelLoopState state, List partial) => { // もとめたい数字がきたらListに登録する if (num == XXX) { partial.Add(num); } return partial; }, partial => { foreach (var val in partial) { lock (obj) motometeruList.Add(val); } });
コードの説明
結果
for文でループさせる回数や中身の計算にもよると思いますが、自分がやりたかった計算では、「40000000」までループさせる計算で、
Parallel使う前は1500秒だったものが、Parallelに変更すると、
300秒ぐらいで終わるようになりました。
0 件のコメント:
コメントを投稿