diff --git a/EvenPerfectBitScanner.Benchmarks/PrimeTesterBenchmarks.cs b/EvenPerfectBitScanner.Benchmarks/PrimeTesterBenchmarks.cs index 3a54d2a..f63e315 100644 --- a/EvenPerfectBitScanner.Benchmarks/PrimeTesterBenchmarks.cs +++ b/EvenPerfectBitScanner.Benchmarks/PrimeTesterBenchmarks.cs @@ -12,6 +12,7 @@ namespace EvenPerfectBitScanner.Benchmarks; [MemoryDiagnoser] public class PrimeTesterBenchmarks { + private static readonly HeuristicCombinedPrimeTester _heuristicCombinedTester = new(); private static readonly HeuristicPrimeTester _heuristicTester = new(); private ulong[] _candidates = []; @@ -71,6 +72,42 @@ public class PrimeTesterBenchmarks return primeCount; } + [Benchmark] + public int HeuristicCombinedGpu() + { + HeuristicCombinedPrimeTester tester = _heuristicCombinedTester; + ulong[] values = _candidates; + int primeCount = 0; + + for (int i = 0; i < values.Length; i++) + { + if (HeuristicCombinedPrimeTester.IsPrimeGpu(values[i])) + { + primeCount++; + } + } + + return primeCount; + } + + [Benchmark] + public int HeuristicCombinedCpu() + { + HeuristicCombinedPrimeTester tester = _heuristicCombinedTester; + ulong[] values = _candidates; + int primeCount = 0; + + for (int i = 0; i < values.Length; i++) + { + if (HeuristicCombinedPrimeTester.IsPrimeCpu(values[i])) + { + primeCount++; + } + } + + return primeCount; + } + private static readonly PrimeTester _nonHeuristicTester = new(); [Benchmark]