public static void Main2() { var source = Enumerable.Range(0, 10000).ToArray(); Stopwatch sw = Stopwatch.StartNew(); MyPartitioner partitioner = new MyPartitioner(source, .5); var query = from n in partitioner.AsParallel() select ProcessData(n); foreach (var v in query) { } Console.WriteLine("Processing time with custom partitioner {0}", sw.ElapsedMilliseconds); var source2 = Enumerable.Range(0, 10000).ToArray(); sw = Stopwatch.StartNew(); var query2 = from n in source2.AsParallel() select ProcessData(n); foreach (var v in query2) { } Console.WriteLine("Processing time with default partitioner {0}", sw.ElapsedMilliseconds); }
static void Main2(string[] args) { //Math. int[] sourceArray = Enumerable.Range(1, 12680).ToArray(); // int partitionCount = 4; Task.Factory.StartNew(() => { if (Console.ReadKey(true).KeyChar == 'c') { cts.Cancel(); } }); MyPartitioner mp = new MyPartitioner(sourceArray, .50); PartTest2 p = new PartTest2(); var q = from item in mp.AsParallel() let result = p.FakeFibonacci(item) orderby item select new { Num = item, Result = result, MyThread = Thread.CurrentThread.ManagedThreadId }; Console.WriteLine("Beginning custom partitioning"); foreach (var v in q) { String s = String.Format("Val={0}:Fib={1}:Thread={2} ", v.Num, v.Result, v.MyThread); sb.AppendLine(s); // Console.WriteLine(s); } //Thread.SpinWait(500000000); //var q2 = from item in sourceArray.AsParallel() // let result = p.Fibonacci(item) // orderby item // select new { Num = item, Result = result, MyThread = Thread.CurrentThread.ManagedThreadId }; //Console.WriteLine("Beginning default partitioning."); //sb.AppendLine("Beginning default partitioning."); //foreach (var v in q2) //{ // String s = String.Format("Val={0}:Fib={1}:Thread={2} ", v.Num, v.Result, v.MyThread); // sb.AppendLine(s); // // Console.WriteLine(s); //} // System.IO.File.WriteAllText(@"..\..\logfile1.txt", sb.ToString()); // Console.WriteLine("Press any key"); // Console.ReadKey(); cts.Dispose(); }