コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="startNumber"></param>
        /// <param name="endNumber"></param>
        /// <param name="isPrimeTester"></param>
        /// <param name="allowedVersionNumbers"></param>
        protected static void TestFindPrimesBetweenPerformance(ulong startNumber, ulong endNumber, IIsPrime isPrimeTester, int[] allowedVersionNumbers = null)
        {
            Type[] findPrimesBetweenTypes = PerformanceTests.GetTestingTypes("PrimeNumbers.Model", "FindPrimesBetweenV", allowedVersionNumbers);

            if ((findPrimesBetweenTypes != null) &&
                (findPrimesBetweenTypes.Any()))
            {
                Console.WriteLine($"FindPrimesBetween Testing with {startNumber.ToString("#,##0")} - {endNumber.ToString("#,##0")}");

                foreach (Type type in findPrimesBetweenTypes)
                {
                    IFindPrimesBetween findPrimesBetweenTester = (IFindPrimesBetween)Activator.CreateInstance(type);

                    PerformanceTests.FindPrimesBetweenTimer(findPrimesBetweenTester, isPrimeTester, startNumber, endNumber);
                }
            }
            else
            {
                Console.WriteLine("No FindPrimesBetween Classes found to test with");
            }

            Console.WriteLine();
        }
コード例 #2
0
        protected static void TestRun2()
        {
            //Program.NumberOfPrimesToFind(new FindPrimesToV5Save(), new IsPrimeV7(), (int.MaxValue - 57));
            //Program.NumberOfPrimesToFind(new FindPrimesToV5Save(), new IsPrimeV7(), 1000000);

            //ulong diffrenceValue = int.MaxValue - 57;
            //List<Task> tasks = new List<Task>();

            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 0, diffrenceValue * 1)));
            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 1, diffrenceValue * 2)));
            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 2, diffrenceValue * 3)));
            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 3, diffrenceValue * 4)));
            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 4, diffrenceValue * 5)));
            //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), diffrenceValue * 5, diffrenceValue * 6)));

            //Console.WriteLine($"{DateTime.Now.ToString()} Tasks Running");
            //Task.WaitAll(tasks.ToArray());

            //TestRun();

            //6,875,316,800 - 6,956,202,879
            //var results1 = Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV6Save(), new IsPrimeV7(), 6875316800, 6956202879);
            //var results2 = Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV5Save(), new IsPrimeV7(), 6875316800, 6956202879);

            //Console.WriteLine();
            //Console.WriteLine($"Results : {(results1.Intersect(results2).Count() == results1.Union(results2).Count() ? "Equal" : "Not Equal")}");

            ulong diffrenceValue = 80886080; // 10MB file size
            ulong maxNumber      = ((long)(int.MaxValue - 57) * 90);
            ulong startNumber    = 193236845120;

            int loopIterations = (int)(Math.Ceiling((decimal)(maxNumber / diffrenceValue)));

            //int loopIterations = (int)(Math.Ceiling((decimal)(32416190071 + 10) / diffrenceValue));

            PerformanceTests.NumberPercentageUsage(maxNumber);

            Console.WriteLine($"Increment : {diffrenceValue.ToString("#,##0")}");
            Console.WriteLine($"Loop count : {loopIterations.ToString("#,##0")}");
            Console.WriteLine();

            Parallel.For(0,
                         loopIterations,
                         new ParallelOptions {
                MaxDegreeOfParallelism = 11
            },
                         index =>
            {
                PerformanceTests.FindPrimesBetweenTimer(new FindPrimesBetweenV6(),
                                                        new IsPrimeV7(),
                                                        (startNumber + (diffrenceValue * ((ulong)index))),
                                                        (startNumber + ((diffrenceValue * ((ulong)index + 1)) - 1)));
            });

            //for (int index = 0; index <= loopIterations; index++)
            //{
            //    Program.NumberOfPrimesBetweenFind(new FindPrimesBetweenV6Save(),
            //                                      new IsPrimeV7(),
            //                                      (startNumber + (diffrenceValue * ((ulong)index))),
            //                                      (startNumber + (diffrenceValue * ((ulong)index + 1) - 1)));
            //}
        }