diff --git a/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_AllItems.cs b/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_AllItems.cs deleted file mode 100644 index 626e743..0000000 --- a/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_AllItems.cs +++ /dev/null @@ -1,73 +0,0 @@ -namespace Recyclable.Collections.Benchmarks -{ - public partial class RecyclableCollectionsBenchmarks - { - private const long MaxItemsToSearchFor = RecyclableDefaults.MinItemsCountForParallelization * 3; - - public void Array_IndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjects; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(Array.IndexOf(list, data[^i])); - } - } - - public void List_IndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjectsAsList; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(list.IndexOf(data[^i])); - } - } - - public void PooledList_IndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjectsAsPooledList; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(list.IndexOf(data[^i])); - } - } - - public void RecyclableArrayList_IndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjectsAsRecyclableArrayList; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(list.IndexOf(data[^i])); - } - } - - public void RecyclableList_IndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjectsAsRecyclableList; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(list.IndexOf(data[^i])); - } - } - - public void RecyclableList_LongIndexOf_AllItems() - { - var data = TestObjects; - var list = TestObjectsAsRecyclableList; - var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); - for (var i = 1; i <= dataCount; i++) - { - DoNothing(list.LongIndexOf(data[^i])); - } - } - } -} diff --git a/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_BestAndWorstCases.cs b/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_BestAndWorstCases.cs new file mode 100644 index 0000000..30e2606 --- /dev/null +++ b/Recyclable.Collections.Benchmarks/Benchmarks/IndexOf_BestAndWorstCases.cs @@ -0,0 +1,79 @@ +namespace Recyclable.Collections.Benchmarks +{ + public partial class RecyclableCollectionsBenchmarks + { + private const long MaxItemsToSearchFor = 100_000;// RecyclableDefaults.MinItemsCountForParallelization * 3; + + public void Array_IndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjects; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(Array.IndexOf(list, data[i])); + DoNothing(Array.IndexOf(list, data[^(i + 1)])); + } + } + + public void List_IndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjectsAsList; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(list.IndexOf(data[i])); + DoNothing(list.IndexOf(data[^(i + 1)])); + } + } + + public void PooledList_IndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjectsAsPooledList; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(list.IndexOf(data[i])); + DoNothing(list.IndexOf(data[^(i + 1)])); + } + } + + public void RecyclableArrayList_IndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjectsAsRecyclableArrayList; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(list.IndexOf(data[i])); + DoNothing(list.IndexOf(data[^(i + 1)])); + } + } + + public void RecyclableList_IndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjectsAsRecyclableList; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(list.IndexOf(data[i])); + DoNothing(list.IndexOf(data[^(i + 1)])); + } + } + + public void RecyclableList_LongIndexOf_BestAndWorstCases() + { + var data = TestObjects; + var list = TestObjectsAsRecyclableList; + var dataCount = Math.Min(TestObjectCount, MaxItemsToSearchFor); + for (var i = 0; i < dataCount; i++) + { + DoNothing(list.IndexOf(data[i])); + DoNothing(list.LongIndexOf(data[^(i + 1)])); + } + } + } +} diff --git a/Recyclable.Collections.Benchmarks/Benchmarks/RecyclableCollections.Benchmarks.cs b/Recyclable.Collections.Benchmarks/Benchmarks/RecyclableCollections.Benchmarks.cs index 82fad90..bae12f8 100644 --- a/Recyclable.Collections.Benchmarks/Benchmarks/RecyclableCollections.Benchmarks.cs +++ b/Recyclable.Collections.Benchmarks/Benchmarks/RecyclableCollections.Benchmarks.cs @@ -7,7 +7,7 @@ namespace Recyclable.Collections.Benchmarks { Add_WithCapacity, Add, AddRange_WithCapacity, AddRangeWhenSourceIsArray, AddRangeWhenSourceIsIEnumerable, AddRangeWhenSourceIsIList, AddRangeWhenSourceIsList, AddRangeWhenSourceIsSameType, Contains_FirstItems, - Contains_LastItems, Count, Create_WithCapacity, Create, GetItem, IndexOf_AllItems, IndexOf_FirstItems, + Contains_LastItems, Count, Create_WithCapacity, Create, GetItem, IndexOf_BestAndWorstCases, IndexOf_FirstItems, IndexOf_LastItems, LongCount, Remove_FirstItems, Remove_LastItems, RemoveAt_FirstItems, RemoveAt_LastItems, SetItem, } @@ -37,7 +37,7 @@ namespace Recyclable.Collections.Benchmarks RecyclableCollectionsBenchmarkType.Create_WithCapacity, RecyclableCollectionsBenchmarkType.Create, RecyclableCollectionsBenchmarkType.GetItem, - RecyclableCollectionsBenchmarkType.IndexOf_AllItems, + RecyclableCollectionsBenchmarkType.IndexOf_BestAndWorstCases, RecyclableCollectionsBenchmarkType.IndexOf_FirstItems, RecyclableCollectionsBenchmarkType.IndexOf_LastItems, RecyclableCollectionsBenchmarkType.LongCount,