Example #1
0
        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);
        }
Example #2
0
        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();
        }