When I use the example from MSDN:
var queryA = from num in numberList.AsParallel() select ExpensiveFunction(num); //good for PLINQ var queryB = from num in numberList.AsParallel() where num % 2 > 0 select num; //not as good for PLINQ My example program:
static void Main(string[] args) { // ThreadPool.SetMinThreads(100, 100); var numberList = new List<int>(); for (int i = 0; i <= 1000; i++) { numberList.Add(i); } Stopwatch sw = new Stopwatch(); sw.Start(); var queryA = from num in numberList select ExpensiveFunction(num); //good for PLINQ var c = queryA.ToList<int>(); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); var queryB = from num in numberList.AsParallel() select ExpensiveFunction(num); //good for PLINQ c = queryB.ToList<int>(); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.ReadKey(); } static int ExpensiveFunction(int a) { a = a + 100 - 9 + 0 + 98; // Console.WriteLine(a); return a; } The result is:
7 41 Why is using AsParallel() slower than not using it?
a += 189;is NOT expensive to calculate.