Tester made static to better mimic production code.
This commit is contained in:
1 parent
d149700311
commit
ca8ab2bcf8
1 file changed
+8
-11
@@ -12,8 +12,7 @@ namespace EvenPerfectBitScanner.Benchmarks;
|
|||||||
[MemoryDiagnoser]
|
[MemoryDiagnoser]
|
||||||
public class PrimeTesterBenchmarks
|
public class PrimeTesterBenchmarks
|
||||||
{
|
{
|
||||||
private HeuristicPrimeTester _cpuTester = null!;
|
private static readonly HeuristicPrimeTester _heuristicTester = new();
|
||||||
private HeuristicPrimeTester _gpuTester = null!;
|
|
||||||
private ulong[] _candidates = [];
|
private ulong[] _candidates = [];
|
||||||
|
|
||||||
[ParamsSource(nameof(GetBenchmarkCases))]
|
[ParamsSource(nameof(GetBenchmarkCases))]
|
||||||
@@ -22,8 +21,6 @@ public class PrimeTesterBenchmarks
|
|||||||
[GlobalSetup]
|
[GlobalSetup]
|
||||||
public void GlobalSetup()
|
public void GlobalSetup()
|
||||||
{
|
{
|
||||||
_cpuTester = new HeuristicPrimeTester();
|
|
||||||
_gpuTester = new HeuristicPrimeTester();
|
|
||||||
_candidates = BenchmarkCase.Candidates;
|
_candidates = BenchmarkCase.Candidates;
|
||||||
|
|
||||||
if (_candidates.Length == 0)
|
if (_candidates.Length == 0)
|
||||||
@@ -32,15 +29,15 @@ public class PrimeTesterBenchmarks
|
|||||||
}
|
}
|
||||||
|
|
||||||
CancellationToken cancellationToken = CancellationToken.None;
|
CancellationToken cancellationToken = CancellationToken.None;
|
||||||
_cpuTester.IsPrimeCpu(_candidates[0], cancellationToken);
|
_ = _heuristicTester.IsPrimeCpu(_candidates[0], cancellationToken);
|
||||||
_gpuTester.IsPrimeGpu(_candidates[0]);
|
_ = _heuristicTester.IsPrimeGpu(_candidates[0]);
|
||||||
_ = Prime.Numbers.IsPrime(_candidates[0]);
|
_ = Prime.Numbers.IsPrime(_candidates[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Benchmark(Baseline = true)]
|
[Benchmark(Baseline = true)]
|
||||||
public int HeuristicCpu()
|
public int HeuristicCpu()
|
||||||
{
|
{
|
||||||
HeuristicPrimeTester tester = _cpuTester;
|
HeuristicPrimeTester tester = _heuristicTester;
|
||||||
ulong[] values = _candidates;
|
ulong[] values = _candidates;
|
||||||
CancellationToken cancellationToken = CancellationToken.None;
|
CancellationToken cancellationToken = CancellationToken.None;
|
||||||
int primeCount = 0;
|
int primeCount = 0;
|
||||||
@@ -59,9 +56,8 @@ public class PrimeTesterBenchmarks
|
|||||||
[Benchmark]
|
[Benchmark]
|
||||||
public int HeuristicGpu()
|
public int HeuristicGpu()
|
||||||
{
|
{
|
||||||
HeuristicPrimeTester tester = _gpuTester;
|
HeuristicPrimeTester tester = _heuristicTester;
|
||||||
ulong[] values = _candidates;
|
ulong[] values = _candidates;
|
||||||
CancellationToken cancellationToken = CancellationToken.None;
|
|
||||||
int primeCount = 0;
|
int primeCount = 0;
|
||||||
|
|
||||||
for (int i = 0; i < values.Length; i++)
|
for (int i = 0; i < values.Length; i++)
|
||||||
@@ -75,10 +71,12 @@ public class PrimeTesterBenchmarks
|
|||||||
return primeCount;
|
return primeCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static readonly PrimeTester _nonHeuristicTester = new();
|
||||||
|
|
||||||
[Benchmark]
|
[Benchmark]
|
||||||
public int NonHeuristicGpu()
|
public int NonHeuristicGpu()
|
||||||
{
|
{
|
||||||
PrimeTester tester = PrimeTester.Exclusive;
|
PrimeTester tester = _nonHeuristicTester;
|
||||||
ulong[] values = _candidates;
|
ulong[] values = _candidates;
|
||||||
CancellationToken cancellationToken = CancellationToken.None;
|
CancellationToken cancellationToken = CancellationToken.None;
|
||||||
int primeCount = 0;
|
int primeCount = 0;
|
||||||
@@ -97,7 +95,6 @@ public class PrimeTesterBenchmarks
|
|||||||
[Benchmark]
|
[Benchmark]
|
||||||
public int NonHeuristicCpu()
|
public int NonHeuristicCpu()
|
||||||
{
|
{
|
||||||
// PrimeTester tester = _gpuTester;
|
|
||||||
ulong[] values = _candidates;
|
ulong[] values = _candidates;
|
||||||
CancellationToken cancellationToken = CancellationToken.None;
|
CancellationToken cancellationToken = CancellationToken.None;
|
||||||
int primeCount = 0;
|
int primeCount = 0;
|
||||||
|
|||||||
Reference in new issue
Block a user