BaselineBenchmarkType / BenchmarkType renamed to BaseDataType / DataType

This commit is contained in:
mlemanczyk committed 2023-06-11 22:02:55 +02:00
1 parent 1f00a431fb
commit 15614de8a4
8 files changed
+27 -27

No files matched your search

@@ -17,8 +17,8 @@ namespace Recyclable.Collections.Benchmarks
public RecyclableCollectionsBenchmarks() : base() public RecyclableCollectionsBenchmarks() : base()
{ {
TestObjectCount = 1; TestObjectCount = 1;
BaselineBenchmarkType = RecyclableCollectionsBenchmarkSource.List; BaseDataType = RecyclableCollectionsBenchmarkSource.List;
BenchmarkType = RecyclableCollectionsBenchmarkSource.RecyclableLongList; DataType = RecyclableCollectionsBenchmarkSource.RecyclableLongList;
} }
[Params [Params
@@ -54,7 +54,7 @@ namespace Recyclable.Collections.Benchmarks
( (
RecyclableCollectionsBenchmarkSource.List RecyclableCollectionsBenchmarkSource.List
)] )]
public override RecyclableCollectionsBenchmarkSource BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override RecyclableCollectionsBenchmarkSource BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
[Params [Params
( (
@@ -64,7 +64,7 @@ namespace Recyclable.Collections.Benchmarks
RecyclableCollectionsBenchmarkSource.RecyclableList, RecyclableCollectionsBenchmarkSource.RecyclableList,
RecyclableCollectionsBenchmarkSource.RecyclableLongList RecyclableCollectionsBenchmarkSource.RecyclableLongList
)] )]
public override RecyclableCollectionsBenchmarkSource BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override RecyclableCollectionsBenchmarkSource DataType { get => base.DataType; set => base.DataType = value; }
protected override Action? GetTestMethod(RecyclableCollectionsBenchmarkSource benchmarkType) protected override Action? GetTestMethod(RecyclableCollectionsBenchmarkSource benchmarkType)
=> (Action?) GetType().GetMethod($"{benchmarkType}_{TestCase}", BindingFlags.Instance | BindingFlags.Public)?.CreateDelegate(typeof(Action), this) => (Action?) GetType().GetMethod($"{benchmarkType}_{TestCase}", BindingFlags.Instance | BindingFlags.Public)?.CreateDelegate(typeof(Action), this)
@@ -12,7 +12,7 @@ namespace Recyclable.Collections.Benchmarks.POC
public class BoolOrComparePocBenchmarks : PocBenchmarkBase<BoolOrComparePocBenchmarkType> public class BoolOrComparePocBenchmarks : PocBenchmarkBase<BoolOrComparePocBenchmarkType>
{ {
[Params(BoolOrComparePocBenchmarkType.Bool, BoolOrComparePocBenchmarkType.Compare)] [Params(BoolOrComparePocBenchmarkType.Bool, BoolOrComparePocBenchmarkType.Compare)]
public override BoolOrComparePocBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override BoolOrComparePocBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
[Params(8)] [Params(8)]
public override int TestObjectCount { get => base.TestObjectCount; set => base.TestObjectCount = value; } public override int TestObjectCount { get => base.TestObjectCount; set => base.TestObjectCount = value; }
@@ -38,10 +38,10 @@ namespace Recyclable.Collections.Benchmarks.POC
DelegateVsComparerPocBenchmarkType.ListOfUnboxedStructs, DelegateVsComparerPocBenchmarkType.ListOfUnboxedStructs,
DelegateVsComparerPocBenchmarkType.StaticFunc DelegateVsComparerPocBenchmarkType.StaticFunc
)] )]
public override DelegateVsComparerPocBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override DelegateVsComparerPocBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
[Params(DelegateVsComparerPocBenchmarkType.Comparer)] [Params(DelegateVsComparerPocBenchmarkType.Comparer)]
public override DelegateVsComparerPocBenchmarkType BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override DelegateVsComparerPocBenchmarkType BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
#region Dummy classes #region Dummy classes
@@ -6,8 +6,8 @@ namespace Recyclable.Collections.Benchmarks.POC
{ {
public abstract class PocBenchmarkBase<TBenchmarkType> public abstract class PocBenchmarkBase<TBenchmarkType>
{ {
public virtual TBenchmarkType? BenchmarkType { get; set; } public virtual TBenchmarkType? DataType { get; set; }
public virtual TBenchmarkType? BaselineBenchmarkType { get; set; } public virtual TBenchmarkType? BaseDataType { get; set; }
private Action? _testMethod; private Action? _testMethod;
protected Action TestMethod protected Action TestMethod
@@ -96,23 +96,23 @@ namespace Recyclable.Collections.Benchmarks.POC
[GlobalSetup] [GlobalSetup]
public virtual void Setup() public virtual void Setup()
{ {
Console.WriteLine($"******* SETTING UP TEST CASE FOR BENCHMARK {{{BenchmarkType}}} *******"); Console.WriteLine($"******* SETTING UP TEST CASE FOR BENCHMARK {{{DataType}}} *******");
if (!EqualityComparer<TBenchmarkType>.Default.Equals(BaselineBenchmarkType, default)) if (!EqualityComparer<TBenchmarkType>.Default.Equals(BaseDataType, default))
{ {
Console.WriteLine("******* SETTING UP BASELINE DATA *******"); Console.WriteLine("******* SETTING UP BASELINE DATA *******");
PrepareData(BaselineBenchmarkType); PrepareData(BaseDataType);
_baselineMethod = GetTestMethod(BaselineBenchmarkType); _baselineMethod = GetTestMethod(BaseDataType);
} }
//~ We don't want to prepare data if baseline data is the same is benchmark data. //~ We don't want to prepare data if baseline data is the same is benchmark data.
//~ One would override another - waste of time & resources. //~ One would override another - waste of time & resources.
if (!EqualityComparer<TBenchmarkType>.Default.Equals(BaselineBenchmarkType, BenchmarkType)) if (!EqualityComparer<TBenchmarkType>.Default.Equals(BaseDataType, DataType))
{ {
Console.WriteLine("******* SETTING UP TEST CASE DATA *******"); Console.WriteLine("******* SETTING UP TEST CASE DATA *******");
//~ If BaselineBenchmarkType == null, then we'll come here only if BaselineBenchmarkType != null. //~ If BaseDataType == null, then we'll come here only if DataType != null.
PrepareData(BenchmarkType!); PrepareData(DataType!);
_testMethod = GetTestMethod(BenchmarkType); _testMethod = GetTestMethod(DataType);
} }
Console.WriteLine("******* DATA PREPARED *******"); Console.WriteLine("******* DATA PREPARED *******");
@@ -23,11 +23,11 @@ namespace Recyclable.Collections.Benchmarks.POC
public partial class RecyclableLongListPocBenchmarks : PocBenchmarkBase<RecyclableLongListPocBenchmarkType> public partial class RecyclableLongListPocBenchmarks : PocBenchmarkBase<RecyclableLongListPocBenchmarkType>
{ {
[Params(RecyclableLongListPocBenchmarkType.IndexOf)] [Params(RecyclableLongListPocBenchmarkType.IndexOf)]
public override RecyclableLongListPocBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override RecyclableLongListPocBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
// [Params(BenchmarkType.Array, BenchmarkType.List, BenchmarkType.RecyclableList, BenchmarkType.RecyclableLongList)] // [Params(BenchmarkType.Array, BenchmarkType.List, BenchmarkType.RecyclableList, BenchmarkType.RecyclableLongList)]
[Params(RecyclableLongListPocBenchmarkType.IndexOf_PooledList)] [Params(RecyclableLongListPocBenchmarkType.IndexOf_PooledList)]
public override RecyclableLongListPocBenchmarkType BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override RecyclableLongListPocBenchmarkType BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
private long[]? _testArray; private long[]? _testArray;
public long[] TestObjects => _testArray ?? throw new NullReferenceException("Something is wrong and test objects are null"); public long[] TestObjects => _testArray ?? throw new NullReferenceException("Something is wrong and test objects are null");
@@ -131,7 +131,7 @@ namespace Recyclable.Collections.Benchmarks.POC
{ {
base.PrepareData(benchmarkType); base.PrepareData(benchmarkType);
switch (BenchmarkType) switch (DataType)
{ {
case RecyclableLongListPocBenchmarkType.IndexOfV1: case RecyclableLongListPocBenchmarkType.IndexOfV1:
_testRecyclableLongListIndexOfV1 = new(TestObjects, BlockSize, expectedItemsCount: TestObjectCount); _testRecyclableLongListIndexOfV1 = new(TestObjects, BlockSize, expectedItemsCount: TestObjectCount);
@@ -12,10 +12,10 @@ namespace Recyclable.Collections.Benchmarks.POC
public class RoundBenchmarks : PocBenchmarkBase<RoundBenchmarkType> public class RoundBenchmarks : PocBenchmarkBase<RoundBenchmarkType>
{ {
[Params(RoundBenchmarkType.MathFloor)] [Params(RoundBenchmarkType.MathFloor)]
public override RoundBenchmarkType BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override RoundBenchmarkType BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
[Params(RoundBenchmarkType.MathRound, RoundBenchmarkType.WithTypecasting)] [Params(RoundBenchmarkType.MathRound, RoundBenchmarkType.WithTypecasting)]
public override RoundBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override RoundBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
private const double OptimalParallelSearchStep = 0.329; private const double OptimalParallelSearchStep = 0.329;
@@ -21,11 +21,11 @@ namespace Recyclable.Collections.Benchmarks.POC
SpanVsArrayBenchmarkType.ArrayGetWithVar, SpanVsArrayBenchmarkType.SpanGet, SpanVsArrayBenchmarkType.ArrayGetWithVar, SpanVsArrayBenchmarkType.SpanGet,
SpanVsArrayBenchmarkType.ArraySetWithField, SpanVsArrayBenchmarkType.ArraySetWithVar, SpanVsArrayBenchmarkType.SpanSet SpanVsArrayBenchmarkType.ArraySetWithField, SpanVsArrayBenchmarkType.ArraySetWithVar, SpanVsArrayBenchmarkType.SpanSet
)] )]
public override SpanVsArrayBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override SpanVsArrayBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
[Params(SpanVsArrayBenchmarkType.ArrayGetWithField)] [Params(SpanVsArrayBenchmarkType.ArrayGetWithField)]
// [Params(SpanVsArrayBenchmarkType.ArraySetWithField)] // [Params(SpanVsArrayBenchmarkType.ArraySetWithField)]
public override SpanVsArrayBenchmarkType BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override SpanVsArrayBenchmarkType BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
protected override Action GetTestMethod(SpanVsArrayBenchmarkType benchmarkType) => benchmarkType switch protected override Action GetTestMethod(SpanVsArrayBenchmarkType benchmarkType) => benchmarkType switch
{ {
@@ -83,10 +83,10 @@ namespace Recyclable.Collections.Benchmarks.POC
public object? ItemToFind { get; set; } public object? ItemToFind { get; set; }
[Params(WhenParallelSearchBenchmarkType.IndexOfParallel)] [Params(WhenParallelSearchBenchmarkType.IndexOfParallel)]
public override WhenParallelSearchBenchmarkType BenchmarkType { get => base.BenchmarkType; set => base.BenchmarkType = value; } public override WhenParallelSearchBenchmarkType DataType { get => base.DataType; set => base.DataType = value; }
[Params(WhenParallelSearchBenchmarkType.IndexOfSequentially)] [Params(WhenParallelSearchBenchmarkType.IndexOfSequentially)]
public override WhenParallelSearchBenchmarkType BaselineBenchmarkType { get => base.BaselineBenchmarkType; set => base.BaselineBenchmarkType = value; } public override WhenParallelSearchBenchmarkType BaseDataType { get => base.BaseDataType; set => base.BaseDataType = value; }
private long DoLongIndexOfSequentially() private long DoLongIndexOfSequentially()
{ {
@@ -304,7 +304,7 @@ namespace Recyclable.Collections.Benchmarks.POC
ItemToFind ??= _testData.Last(); ItemToFind ??= _testData.Last();
} }
protected override Action? GetTestMethod(WhenParallelSearchBenchmarkType benchmarkType) => BenchmarkType switch protected override Action? GetTestMethod(WhenParallelSearchBenchmarkType benchmarkType) => DataType switch
{ {
WhenParallelSearchBenchmarkType.IndexOfSequentially => IndexOfSequentially, WhenParallelSearchBenchmarkType.IndexOfSequentially => IndexOfSequentially,
WhenParallelSearchBenchmarkType.IndexOfParallel => IndexOfParallel, WhenParallelSearchBenchmarkType.IndexOfParallel => IndexOfParallel,