RecyclableList._blockPoolingRequired removed for better performance.

This commit is contained in:
mlemanczyk committed 2023-04-17 01:48:02 +02:00
1 parent 4600c4521e
commit e5c0b2a231
1 file changed
+6 -14
+6 -14
View File
@@ -17,7 +17,6 @@ namespace Recyclable.Collections
private int _blockSize;
private byte _blockSizePow2Shift;
private int _blockSizeMinus1;
private bool _blockPoolingRequired;
private int _nextItemBlockIndex;
private int _nextItemIndex;
private int _reservedBlockCount;
@@ -290,7 +289,7 @@ namespace Recyclable.Collections
if (requiredBlockCount > sourceBlockCount)
{
memoryBlocksSpan = new(list._memoryBlocks!, sourceBlockCount, requiredBlockCount - sourceBlockCount);
if (list._blockPoolingRequired)
if (minBlockSize >= RecyclableDefaults.MinPooledArrayLength)
{
if (sourceBlockCount == 0)
{
@@ -347,16 +346,9 @@ namespace Recyclable.Collections
{
list._blockSize = blockSize;
list._blockSizePow2Shift = (byte)(31 - BitOperations.LeadingZeroCount((uint)blockSize));
if (blockSize >= RecyclableDefaults.MinPooledArrayLength)
{
list._blockPoolingRequired = true;
list._blockArrayPool = blockArrayPool ?? RecyclableArrayPool<T>.Shared(blockSize);
}
else
{
list._blockPoolingRequired = false;
list._blockArrayPool = RecyclableArrayPool<T>.Null;
}
list._blockArrayPool = blockSize >= RecyclableDefaults.MinPooledArrayLength
? blockArrayPool ?? RecyclableArrayPool<T>.Shared(blockSize)
: RecyclableArrayPool<T>.Null;
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.AggressiveOptimization)]
@@ -767,7 +759,7 @@ namespace Recyclable.Collections
public void Clear()
{
if (_blockPoolingRequired)
if (_blockSize >= RecyclableDefaults.MinPooledArrayLength)
{
Span<T[]> memoryBlocksSpan = new(_memoryBlocks, 0, _reservedBlockCount);
int memoryBlocksCount = memoryBlocksSpan.Length;
@@ -869,7 +861,7 @@ namespace Recyclable.Collections
public void RemoveBlock(int index)
{
if (_blockPoolingRequired)
if (_blockSize >= RecyclableDefaults.MinPooledArrayLength)
{
_blockArrayPool.Return(_memoryBlocks[index], NeedsClearing);
}