/// <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(); }
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))); //} }