メモリ内のデータに対して並列操作を実行するために使用されます。つまり、LINQ to Object の並列操作のみをサポートします。
1. 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);
次に、1,500 万件のレコードを ConcurrentDictionary に注ぐことをシミュレートして、シリアルとパラレルの効率の違いを確認してみましょう.私のクラシック マシンには 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