Why was the parallel version slower than the sequential version in this example?
c#, parallel-processing
Solution
The sequential version was faster because the time spent doing operations on each iteration in your example is very small and there is a fairly significant overhead involved with creating and managing multiple threads.
Parallel programming only increases efficiency when each iteration is sufficiently expensive in terms of processor time.
Problem
I've been learning a little about parallelism in the last few days, and I came across this example. I put it side to side with a sequential for loop like this: ``` private static void NoParallelTest() { int[] nums = Enumerable.Range(0, 1000000).ToArray(); long total = 0; var watch = Stopwatch.StartNew(); for (int i = 0; i < nums.Length; i++) { total += nums[i]; } Console.WriteLine("NoParallel"); Console.WriteLine(watch.ElapsedMilliseconds); Console.WriteLine("The total is {0}", total); } ``` I was surprised to see that the NoParallel method finished way way faster than the parallel example given at the site. I have an i5 PC. I really thought that the Parallel method would finish faster. Is there a reasonable explanation for this? Maybe I misunderstood something?