(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 件のコメント:
コメントを投稿