/// <summary> /// /// </summary> /// <param name="numberToTestWith"></param> /// <param name="allowedVersionNumbers"></param> protected static void TestIsPrimePerformance(ulong numberToTestWith, int[] allowedVersionNumbers = null) { Type[] isPrimeTypes = PerformanceTests.GetTestingTypes("PrimeNumbers.Model", "IsPrimeV", allowedVersionNumbers); if ((isPrimeTypes != null) && (isPrimeTypes.Any())) { Console.WriteLine($"IsPrime Testing with {numberToTestWith.ToString("#,##0")}"); foreach (Type type in isPrimeTypes) { IIsPrime isPrimeTester = (IIsPrime)Activator.CreateInstance(type); PerformanceTests.IsPrimeTimer(isPrimeTester, numberToTestWith); } } else { Console.WriteLine("No IsPrime Classes found to test with"); } Console.WriteLine(); }
protected static void TestRun() { //ulong numberToTest = ulong.MaxValue - 1; //for (ulong i = numberToTest; i > 0; i = i - 1) //{ // if (new IsPrimeV6().CheckIsPrime(i)) // { // numberToTest = i; // break; // } // else // { // Console.WriteLine($"{i.ToString("#,##0")} is not prime"); // } //} //ulong numberToTest = (int.MaxValue - 57); //ulong numberToTest = 32416190071; // bigprimes.net larges prime number. ulong numberToTest = 18446744073709551557; Console.WriteLine($"Testing with Number : {numberToTest.ToString("#,##0")}"); Console.WriteLine($"int : {(((decimal)numberToTest / (decimal)int.MaxValue) * 100).ToString()}%"); Console.WriteLine($"Uint : {(((decimal)numberToTest / (decimal)uint.MaxValue) * 100).ToString()}%"); Console.WriteLine($"long : {(((decimal)numberToTest / (decimal)long.MaxValue) * 100).ToString()}%"); Console.WriteLine($"Ulong : {(((decimal)numberToTest / (decimal)ulong.MaxValue) * 100).ToString()}%"); Console.WriteLine(); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV1(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV2(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV3(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV4(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV5(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV6(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberToTest); //Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV8(), numberToTest); List <Task> tasks = new List <Task>(); //tasks.Add(Task.Factory.StartNew(() => Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV1(), numberToTest))); //tasks.Add(Task.Factory.StartNew(() => Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV2(), numberToTest))); //tasks.Add(Task.Factory.StartNew(() => Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV3(), numberToTest))); //tasks.Add(Task.Factory.StartNew(() => Program.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV4(), numberToTest))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV5(), numberToTest))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV6(), numberToTest))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberToTest))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.IsPrimeTimer(new PrimeNumbers.Model.IsPrime.IsPrimeV8(), numberToTest))); Console.WriteLine($"{DateTime.Now.ToString()} Tasks Running"); Task.WaitAll(tasks.ToArray()); //int numberofPrimesToFind = int.MaxValue - 57; //int numberofPrimesToFind = (int.MaxValue - 100) / 2; int numberofPrimesToFind = (int.MaxValue - 100) / 4; Console.WriteLine($"Finding {numberofPrimesToFind.ToString("#,##0")}"); Console.WriteLine($"int : {(((decimal)numberofPrimesToFind / (decimal)int.MaxValue) * 100).ToString()}%"); Console.WriteLine($"Uint : {(((decimal)numberofPrimesToFind / (decimal)uint.MaxValue) * 100).ToString()}%"); Console.WriteLine($"long : {(((decimal)numberofPrimesToFind / (decimal)long.MaxValue) * 100).ToString()}%"); Console.WriteLine($"Ulong : {(((decimal)numberofPrimesToFind / (decimal)ulong.MaxValue) * 100).ToString()}%"); Console.WriteLine(); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV1(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV2(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV3(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV4(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV5(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV6(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV8(), numberofPrimesToFind); tasks.Clear(); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV1(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV2(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV3(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV4(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); Console.WriteLine($"{DateTime.Now.ToString()} Tasks Running"); Task.WaitAll(tasks.ToArray()); tasks.Clear(); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV1(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV2(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV3(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV4(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV5(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV6(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); tasks.Add(Task.Factory.StartNew(() => PerformanceTests.FindPrimesToTimer(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV8(), numberofPrimesToFind))); Console.WriteLine($"{DateTime.Now.ToString()} Tasks Running"); Task.WaitAll(tasks.ToArray()); //tasks.Clear(); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV4(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV3(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); //tasks.Add(Task.Factory.StartNew(() => Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV4(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind))); //Console.WriteLine($"{DateTime.Now.ToString()} Tasks Running"); //Task.WaitAll(tasks.ToArray()); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV4(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind); //Program.NumberOfPrimesToFind(new PrimeNumbers.Model.FindPrimesTo.FindPrimesToV5(), new PrimeNumbers.Model.IsPrime.IsPrimeV7(), numberofPrimesToFind); }