using BenchmarkDotNet.Attributes; namespace Recyclable.Collections.Benchmarks { public partial class RecyclableCollectionsBenchmarks : BenchmarkBase { //[Benchmark(Baseline = false)] public void List_Create() { var list = new List(); DoNothing(list); } //[Benchmark(Baseline = false)] public void List_Create_WithCapacity() { var list = new List(TestObjectCount); DoNothing(list); } //[Benchmark(Baseline = false)] public void List_Add() { var data = TestObjects; var dataCount = TestObjectCount; var list = new List(); for (var i = 0; i < dataCount; i++) { list.Add(data[i]); } } //[Benchmark(Baseline = false)] public void List_Add_WithCapacity() { var data = TestObjects; var dataCount = TestObjectCount; var list = new List(dataCount); for (var i = 0; i < dataCount; i++) { list.Add(data[i]); } } //[Benchmark(Baseline = false)] public void List_AddRangeWhenSourceIsArray() { var data = TestObjects; var list = new List(); list.AddRange(data); } //[Benchmark(Baseline = false)] public void List_AddRangeWhenSourceIsList() { var data = TestObjectsAsList; var list = new List(); list.AddRange(data); } //[Benchmark(Baseline = false)] public void List_AddRangeWhenSourceIsIList() { var data = (IList)TestObjectsAsRecyclableList; var list = new List(); list.AddRange(data); } //[Benchmark(Baseline = false)] public void List_AddRangeWhenSourceIsIEnumerable() { var data = TestObjectsAsIEnumerable; var list = new List(); list.AddRange(data); } //[Benchmark(Baseline = false)] public void List_AddRange_WithCapacity() { var data = TestObjects; var dataCount = TestObjectCount; var list = new List(dataCount); list.AddRange(data); } //[Benchmark(Baseline = false)] public void List_SetItem() { var data = TestObjectsAsList; var dataCount = TestObjectCount; for (var i = 0; i < dataCount; i++) { data[i] = TestObjects[i]; } } //[Benchmark(Baseline = false)] public void List_GetItem() { var data = TestObjectsAsList; var dataCount = TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(data[i]); } } //[Benchmark(Baseline = false)] public void List_Count() { var data = TestObjectsAsList; DoNothing(data.Count); } //[Benchmark(Baseline = false)] public void List_Contains_FirstItems() { var data = TestObjects; var list = TestObjectsAsList; var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(list.Contains(data[i])); } } //[Benchmark(Baseline = false)] public void List_Contains_LastItems() { var data = TestObjects; var list = TestObjectsAsList; var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(list.Contains(data[^(i + 1)])); } } //[Benchmark(Baseline = false)] public void List_IndexOf_FirstItems() { var data = TestObjects; var list = TestObjectsAsList; var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(list.IndexOf(data[i])); } } //[Benchmark(Baseline = false)] public void List_IndexOf_LastItems() { var data = TestObjects; var list = TestObjectsAsList; var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(list.IndexOf(data[^(i + 1)])); } } //[Benchmark(Baseline = true)] public void List_RemoveAt_FirstItems() { var data = TestObjects; var list = new List(data); var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { list.RemoveAt(i); } } //[Benchmark(Baseline = false)] public void List_RemoveAt_LastItems() { var data = TestObjects; var list = new List(data); var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = data.Length - 1; i > data.Length - dataCount - 1; i--) { list.RemoveAt(i); } } //[Benchmark(Baseline = false)] public void List_Remove_FirstItems() { var data = TestObjects; var list = new List(data); var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = 0; i < dataCount; i++) { DoNothing(list.Remove(data[i])); } } //[Benchmark(Baseline = false)] public void List_Remove_LastItems() { var data = TestObjects; var list = new List(data); var dataCount = TestObjectCount / 10 > 0 ? TestObjectCount / 10 : TestObjectCount; for (var i = data.Length - 1; i > data.Length - dataCount - 1; i--) { DoNothing(list.Remove(data[i])); } } } }