using BenchmarkDotNet.Attributes; using Collections.Pooled; namespace Recyclable.Collections.Benchmarks { public partial class RecyclableCollectionsBenchmarks { private object[] _testArray; private RecyclableArrayList _testRecyclableArrayList; private RecyclableList _testRecyclableList; private PooledList _testPooledList; public PooledList TestObjectsAsPooledList => _testPooledList ?? throw new NullReferenceException("Something is wrong and the field is not initialized"); [GlobalSetup] public void Setup() { Console.WriteLine("******* GLOBAL SETUP RAISED *******"); _testObjects = Enumerable.Range(1, TestObjectCount).Select(x => new object()).ToArray(); _testRecyclableArrayList = new(TestObjects, initialCapacity: TestObjectCount); _testRecyclableList = new(TestObjects, BlockSize, expectedItemsCount: TestObjectCount); _testArray = TestObjects.ToArray(); _testObjectsAsList = TestObjects.ToList(); _testObjectsAsRecyclableArrayList = TestObjects.ToRecyclableArrayList(); _testObjectsAsRecyclableList = TestObjects.ToRecyclableList(); _testPooledList = new PooledList(TestObjects); } [GlobalCleanup] public void Cleanup() { Console.WriteLine("******* GLOBAL CLEANUP *******"); _testRecyclableArrayList?.Dispose(); _testRecyclableList?.Dispose(); _testPooledList?.Dispose(); TestObjectsAsRecyclableArrayList?.Dispose(); _testObjectsAsRecyclableArrayList = default; _testObjectsAsRecyclableList = default; _testObjectsAsList = default; _testObjects = default; } } }