(this IEnumerable
// 概要:
// クエリの並列化を有効にします。
//
// パラメーター:
// source:
// System.Linq.ParallelQuery
//
// 型パラメーター:
// TSource:
// source の要素の型。
//
// 戻り値:
// ParallelEnumerable 拡張メソッドにバインドされる System.Linq.ParallelQuery
// source。
//
// 例外:
// System.ArgumentNullException:
// source が null 参照 (Visual Basic の場合は Nothing) です。
using System; using System.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] a = new int[100000000]; a[a.Length - 1] = 1; var start1 = DateTime.Now; var bySerial = a.Count(c => c == 1); Console.WriteLine("Serial :{0}", DateTime.Now - start1); var start2 = DateTime.Now; var byParallel = a.AsParallel().Count(c => c == 1); Console.WriteLine("Parallel:{0}", DateTime.Now - start2); } } }
2コアのPCで実行したとき下記のような差がでました。
Serial :00:00:01.0920000
Parallel:00:00:00.7488000
並列化された場合どの順に処理が完了するか不明なため
順番が保障されなくなる点など気をつける必要が出てきますね。
0 件のコメント:
コメントを投稿