Benchmark improvements & fixes to have 1:1 comparison.
This commit is contained in:
1 parent
4da13cd9c1
commit
571c394f4e
8 files changed
+54
-29
No files matched your search
@@ -7,7 +7,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void List_AddRangeWhenSourceIsArray()
|
public void List_AddRangeWhenSourceIsArray()
|
||||||
{
|
{
|
||||||
var data = TestObjects;
|
var data = TestObjects;
|
||||||
var list = new List<long>();
|
var list = new List<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void RecyclableList_AddRangeWhenSourceIsArray()
|
public void RecyclableList_AddRangeWhenSourceIsArray()
|
||||||
{
|
{
|
||||||
var data = TestObjects;
|
var data = TestObjects;
|
||||||
using var list = new RecyclableList<long>();
|
using var list = new RecyclableList<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void List_AddRangeWhenSourceIsIEnumerable()
|
public void List_AddRangeWhenSourceIsIEnumerable()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsIEnumerable;
|
var data = TestObjectsAsIEnumerable;
|
||||||
var list = new List<long>();
|
var list = new List<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void RecyclableList_AddRangeWhenSourceIsIEnumerable()
|
public void RecyclableList_AddRangeWhenSourceIsIEnumerable()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsIEnumerable;
|
var data = TestObjectsAsIEnumerable;
|
||||||
using var list = new RecyclableList<long>();
|
using var list = new RecyclableList<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,16 +4,22 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
{
|
{
|
||||||
public partial class RecyclableCollectionsBenchmarks
|
public partial class RecyclableCollectionsBenchmarks
|
||||||
{
|
{
|
||||||
|
public void Array_AddRangeWhenSourceIsIList()
|
||||||
|
{
|
||||||
|
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
||||||
|
data.CopyTo(TestObjects, 0);
|
||||||
|
}
|
||||||
|
|
||||||
public void List_AddRangeWhenSourceIsIList()
|
public void List_AddRangeWhenSourceIsIList()
|
||||||
{
|
{
|
||||||
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
||||||
var list = new List<long>();
|
var list = new List<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PooledList_AddRangeWhenSourceIsIList()
|
public void PooledList_AddRangeWhenSourceIsIList()
|
||||||
{
|
{
|
||||||
var data = (IList<long>)TestObjectsAsPooledList;
|
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
||||||
using var list = new PooledList<long>(capacity: TestObjectCount, ClearMode.Auto);
|
using var list = new PooledList<long>(capacity: TestObjectCount, ClearMode.Auto);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
@@ -21,7 +27,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void RecyclableList_AddRangeWhenSourceIsIList()
|
public void RecyclableList_AddRangeWhenSourceIsIList()
|
||||||
{
|
{
|
||||||
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
var data = (IList<long>)TestObjectsAsRecyclableLongList;
|
||||||
using var list = new RecyclableList<long>();
|
using var list = new RecyclableList<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,16 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
{
|
{
|
||||||
public partial class RecyclableCollectionsBenchmarks
|
public partial class RecyclableCollectionsBenchmarks
|
||||||
{
|
{
|
||||||
|
public void Array_AddRangeWhenSourceIsList()
|
||||||
|
{
|
||||||
|
var data = TestObjectsAsList;
|
||||||
|
data.CopyTo(TestObjects, 0);
|
||||||
|
}
|
||||||
|
|
||||||
public void List_AddRangeWhenSourceIsList()
|
public void List_AddRangeWhenSourceIsList()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsList;
|
var data = TestObjectsAsList;
|
||||||
var list = new List<long>();
|
var list = new List<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +27,7 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void RecyclableList_AddRangeWhenSourceIsList()
|
public void RecyclableList_AddRangeWhenSourceIsList()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsList;
|
var data = TestObjectsAsList;
|
||||||
using var list = new RecyclableList<long>();
|
using var list = new RecyclableList<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public void RecyclableList_AddRangeWhenSourceIsRecyclableList()
|
public void RecyclableList_AddRangeWhenSourceIsRecyclableList()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsRecyclableList;
|
var data = TestObjectsAsRecyclableList;
|
||||||
using var list = new RecyclableList<long>();
|
using var list = new RecyclableList<long>(TestObjectCount);
|
||||||
list.AddRange(data);
|
list.AddRange(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RecyclableLongList_AddRangeWhenSourceIsRecyclableList()
|
public void RecyclableLongList_AddRangeWhenSourceIsRecyclableLongList()
|
||||||
{
|
{
|
||||||
var data = TestObjectsAsRecyclableList;
|
var data = TestObjectsAsRecyclableList;
|
||||||
using var list = new RecyclableLongList<long>(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount);
|
using var list = new RecyclableLongList<long>(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount);
|
||||||
|
|||||||
@@ -69,8 +69,21 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
public override RecyclableCollectionsBenchmarkSource DataType { get => base.DataType; set => base.DataType = 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.Static | BindingFlags.Public)?.CreateDelegate(typeof(Action), this)
|
=> TestCase switch
|
||||||
?? (Action?)GetType().GetMethod($"{benchmarkType}_AddRangeWhenSourceIs{benchmarkType}", BindingFlags.Instance | BindingFlags.Public)?.CreateDelegate(typeof(Action), this)
|
{
|
||||||
?? throw new InvalidOperationException($"Method {benchmarkType}_{TestCase} not found in class {GetType().FullName}");
|
RecyclableCollectionsBenchmarkType.AddRangeWhenSourceIsSameType => (Action?)GetType().GetMethod($"{benchmarkType}_AddRangeWhenSourceIs{benchmarkType}", BindingFlags.Instance | BindingFlags.Public)?.CreateDelegate(typeof(Action), this),
|
||||||
|
_ => (Action?) GetType().GetMethod($"{benchmarkType}_{TestCase}", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public)?.CreateDelegate(typeof(Action), this) ?? throw new InvalidOperationException($"Method {benchmarkType}_{TestCase} not found in class {GetType().FullName}")
|
||||||
|
};
|
||||||
|
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
base.Setup();
|
||||||
|
switch(TestCase)
|
||||||
|
{
|
||||||
|
case RecyclableCollectionsBenchmarkType.AddRangeWhenSourceIsIList:
|
||||||
|
PrepareData(RecyclableCollectionsBenchmarkSource.RecyclableLongList);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -38,20 +38,20 @@ namespace Recyclable.Collections.Benchmarks
|
|||||||
benchmark.Cleanup();
|
benchmark.Cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RunPocBenchmarks()
|
static void RunPocBenchmarks()
|
||||||
{
|
{
|
||||||
_ = BenchmarkRunner.Run<BoolOrComparePocBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<BoolOrComparePocBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<DelegateVsComparerPocBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<DelegateVsComparerPocBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<ModuloPocBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<ModuloPocBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<RecyclableLongListPocBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<RecyclableLongListPocBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<TaskRunVsTaskFactoryStartNewBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<TaskRunVsTaskFactoryStartNewBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<RefVsInstanceMemberPocBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<RefVsInstanceMemberPocBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<WhenParallelSearchBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<WhenParallelSearchBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<RoundBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<RoundBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<SpanVsArrayBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<SpanVsArrayBenchmarks>(BenchmarkConfig);
|
||||||
_ = BenchmarkRunner.Run<LessOperatorVsAndOperatorBenchmarks>(BenchmarkConfig);
|
_ = BenchmarkRunner.Run<LessOperatorVsAndOperatorBenchmarks>(BenchmarkConfig);
|
||||||
// ArraySizeLimitPocBenchmarks>(BenchmarkConfig);
|
// ArraySizeLimitPocBenchmarks>(BenchmarkConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<StartupObject>Program</StartupObject>
|
<StartupObject>Recyclable.Collections.Benchmarks.Program</StartupObject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in new issue
Block a user