用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算
一、AsParallel(并行化)
就是在集合后加个AsParallel()。
例如:
var numbers = Enumerable.Range(0, 100);
var result = numbers.AsParallel().AsOrdered().Where(i => i % 2 == 0);
foreach (var i in result)
Console.WriteLine(i);
下面我们模拟给ConcurrentDictionary灌入1500w条记录,看看串行和并行效率上的差异,注意我的老爷机是2个硬件线程。
static void Main(string[] args)
{
var dic = LoadData();
Stopwatch watch = new Stopwatch();
watch.Start();
//串行执行
var query1 = (from n in dic.Values
where n.Age > 20 && n.Age < 25
select n).ToList();
watch.Stop();
Console.WriteLine("串行计算耗费时间:{0}", watch.ElapsedMilliseconds);
watch.Restart();
var query2