diff --git a/Recyclable.Collections.Benchmarks/Program.cs b/Recyclable.Collections.Benchmarks/Program.cs index 3bc30a1..93579d5 100644 --- a/Recyclable.Collections.Benchmarks/Program.cs +++ b/Recyclable.Collections.Benchmarks/Program.cs @@ -25,7 +25,8 @@ internal class Program //benchmark.RecyclableList_Add(); //benchmark.RecyclableList_Add_WithCapacity(); //benchmark.RecyclableList_Contains_LastItems(); - benchmark.RecyclableList_IndexOf_FirstItems(); + //benchmark.RecyclableList_IndexOf_FirstItems(); + benchmark.RecyclableList_AddRangeWhenSourceIsList(); } benchmark.Cleanup(); diff --git a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.List.cs b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.List.cs index ed6c06e..2367de1 100644 --- a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.List.cs +++ b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.List.cs @@ -30,7 +30,7 @@ namespace Recyclable.Collections.Benchmarks } } - //[Benchmark(Baseline = false)] + [Benchmark(Baseline = true)] public void List_Add_WithCapacity() { var data = TestObjects; @@ -42,7 +42,7 @@ namespace Recyclable.Collections.Benchmarks } } - //[Benchmark] + [Benchmark] public void List_AddRangeWhenSourceIsArray() { var data = TestObjects; @@ -50,7 +50,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void List_AddRangeWhenSourceIsList() { var data = TestObjectsAsList; @@ -58,7 +58,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void List_AddRangeWhenSourceIsIList() { var data = (IList)TestObjectsAsList; @@ -66,7 +66,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void List_AddRangeWhenSourceIsIEnumerable() { var data = TestObjectsAsIEnumerable; @@ -74,7 +74,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark(Baseline = false)] + [Benchmark(Baseline = false)] public void List_AddRange_WithCapacity() { var data = TestObjects; @@ -136,7 +136,7 @@ namespace Recyclable.Collections.Benchmarks } } - [Benchmark(Baseline = true)] + //[Benchmark(Baseline = true)] public void List_IndexOf_FirstItems() { var data = TestObjects; @@ -148,7 +148,7 @@ namespace Recyclable.Collections.Benchmarks } } - [Benchmark] + //[Benchmark] public void List_IndexOf_LastItems() { var data = TestObjects; diff --git a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableArrayList.cs b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableArrayList.cs index e970042..f25652d 100644 --- a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableArrayList.cs +++ b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableArrayList.cs @@ -42,7 +42,7 @@ namespace Recyclable.Collections.Benchmarks } } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRangeWhenSourceIsArray() { var data = TestObjects; @@ -50,7 +50,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRangeWhenSourceIsList() { var data = TestObjectsAsList; @@ -58,7 +58,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRangeWhenSourceIsIList() { var data = (IList)TestObjectsAsList; @@ -66,7 +66,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRangeWhenSourceIsIEnumerable() { var data = TestObjectsAsIEnumerable; @@ -74,7 +74,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRangeWhenSourceIsRecyclableArrayList() { var data = TestObjectsAsRecyclableArrayList; @@ -82,7 +82,7 @@ namespace Recyclable.Collections.Benchmarks list.AddRange(data); } - //[Benchmark] + [Benchmark] public void RecyclableArrayList_AddRange_WithCapacity() { var data = TestObjects; diff --git a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableList.cs b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableList.cs index 2bdedf3..7e4c38c 100644 --- a/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableList.cs +++ b/Recyclable.Collections.Benchmarks/RecyclableCollectionsBenchmarks.RecyclableList.cs @@ -14,7 +14,7 @@ namespace Recyclable.Collections.Benchmarks //[Benchmark] public void RecyclableList_Create_WithCapacity() { - using var list = new RecyclableList(minBlockSize: 102_400, expectedItemsCount: TestObjectCount); + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); DoNothing(list); } @@ -35,13 +35,62 @@ namespace Recyclable.Collections.Benchmarks { var data = TestObjects; var dataCount = TestObjectCount; - using var list = new RecyclableList(minBlockSize: 102_400, expectedItemsCount: dataCount); + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: dataCount); for (var i = 0; i < dataCount; i++) { list.Add(data[i]); } } + [Benchmark] + public void RecyclableList_AddRangeWhenSourceIsArray() + { + var data = TestObjects; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + + [Benchmark] + public void RecyclableList_AddRangeWhenSourceIsList() + { + var data = TestObjectsAsList; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + + [Benchmark] + public void RecyclableList_AddRangeWhenSourceIsIList() + { + var data = (IList)TestObjectsAsList; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + + [Benchmark] + public void RecyclableList_AddRangeWhenSourceIsIEnumerable() + { + var data = TestObjectsAsIEnumerable; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + + [Benchmark] + public void RecyclableList_AddRangeWhenSourceIsRecyclableArrayList() + { + var data = TestObjectsAsRecyclableArrayList; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + + [Benchmark] + public void RecyclableList_AddRange_WithCapacity() + { + var data = TestObjects; + var dataCount = TestObjectCount; + using var list = new RecyclableList(minBlockSize: BlockSize, expectedItemsCount: TestObjectCount); + list.AddRange(data); + } + //[Benchmark] public void RecyclableList_GetItem() { @@ -102,7 +151,7 @@ namespace Recyclable.Collections.Benchmarks } } - [Benchmark] + //[Benchmark] public void RecyclableList_IndexOf_FirstItems() { var data = TestObjects; @@ -114,7 +163,7 @@ namespace Recyclable.Collections.Benchmarks } } - [Benchmark] + //[Benchmark] public void RecyclableList_IndexOf_LastItems() { var data = TestObjects;