異世界


2018年8月5日 星期日

平行運算 :PLINQ 的應用

平行運算 (二):PLINQ 的應用 : 文章出處 [https://dotblogs.com.tw/asdtey/2010/05/08/parallelplinq]

……..節錄備忘……

//找出 testData 中包含a 或 包含 abc的字串

resultData = testData.Where(a => a.Contains("a") || a.Contains("abc")).ToList();                            

只要在原本的LINQ語法加上 .AsParallel() 就可以利用平行運算

resultData = testData.AsParallel() .Where(a => a.Contains("a") || a.Contains("abc")).ToList();                         

其中.AsParallel() 並不表示一定會使用平行運算,其執行緒的數目會由 1、2、4、8…來增加,
另外.AsParallel()之後可以接上一個另一個方法 .WithExecutionMode(ParallelExecutionMode.ForceParallelism) ,表示要強迫使用平行運算,
此時程式會像這樣


resultData = testData.AsParallel()                                               
.WithExecutionMode(ParallelExecutionMode.ForceParallelism)
.Where(a => a.Contains("a") || a.Contains("abc")).ToList();  
             

沒有留言:

張貼留言