Switches converted back to IFs. They are IF's in IL anyway.

This commit is contained in:
mlemanczyk committed 2023-01-29 14:19:59 +01:00
1 parent 16acdff58a
commit 6270f79291
1 file changed
+28 -45
+28 -45
View File
@@ -45,16 +45,14 @@ namespace Recyclable.Collections
} }
list._longCount--; list._longCount--;
switch (list._lastItemIndex) if (list._lastItemIndex <= 0)
{ {
case 0:
list._lastBlockIndex--; list._lastBlockIndex--;
list._lastItemIndex = list._blockSize; list._lastItemIndex = list._blockSize;
break; }
else
default: {
list._lastItemIndex--; list._lastItemIndex--;
break;
} }
int blockSize = list._blockSize; int blockSize = list._blockSize;
@@ -103,39 +101,33 @@ namespace Recyclable.Collections
int uninitializedBlocksCount = newMemoryBlocksSpan.Length; int uninitializedBlocksCount = newMemoryBlocksSpan.Length;
if (uninitializedBlocksCount == requiredBlockCount) if (uninitializedBlocksCount == requiredBlockCount)
{ {
switch (blockSize >= RecyclableDefaults.MinPooledArrayLength) if (blockSize >= RecyclableDefaults.MinPooledArrayLength)
{ {
case true:
newMemoryBlocksSpan[0] = blockArrayPool.Rent(blockSize); newMemoryBlocksSpan[0] = blockArrayPool.Rent(blockSize);
blockSize = newMemoryBlocksSpan[0].Length; blockSize = newMemoryBlocksSpan[0].Length;
break; }
else
case false: {
newMemoryBlocksSpan[0] = new T[blockSize]; newMemoryBlocksSpan[0] = new T[blockSize];
break;
} }
newMemoryBlocksSpan = newMemoryBlocksSpan[1..]; newMemoryBlocksSpan = newMemoryBlocksSpan[1..];
uninitializedBlocksCount--; uninitializedBlocksCount--;
} }
switch (blockSize >= RecyclableDefaults.MinPooledArrayLength) if (blockSize >= RecyclableDefaults.MinPooledArrayLength)
{ {
case true:
for (int i = 0; i < uninitializedBlocksCount; i++) for (int i = 0; i < uninitializedBlocksCount; i++)
{ {
newMemoryBlocksSpan[i] = blockArrayPool.Rent(blockSize); newMemoryBlocksSpan[i] = blockArrayPool.Rent(blockSize);
} }
}
break; else
{
case false:
for (int i = 0; i < uninitializedBlocksCount; i++) for (int i = 0; i < uninitializedBlocksCount; i++)
{ {
newMemoryBlocksSpan[i] = new T[blockSize]; newMemoryBlocksSpan[i] = new T[blockSize];
} }
break;
} }
return newMemoryBlocks; return newMemoryBlocks;
@@ -146,20 +138,17 @@ namespace Recyclable.Collections
T[][] memory = _memoryBlocks; T[][] memory = _memoryBlocks;
long newCapacity; long newCapacity;
switch (_capacity > 0) if (_capacity > 0)
{ {
case true:
newCapacity = _capacity; newCapacity = _capacity;
while (newCapacity < requestedCapacity) while (newCapacity < requestedCapacity)
{ {
newCapacity *= 2; newCapacity *= 2;
} }
}
break; else
{
case false:
newCapacity = requestedCapacity; newCapacity = requestedCapacity;
break;
} }
memory = SetNewLength(memory, _blockSize, newCapacity); memory = SetNewLength(memory, _blockSize, newCapacity);
@@ -176,9 +165,8 @@ namespace Recyclable.Collections
public RecyclableList(int blockSize = RecyclableDefaults.BlockSize, long? expectedItemsCount = default) public RecyclableList(int blockSize = RecyclableDefaults.BlockSize, long? expectedItemsCount = default)
{ {
switch (expectedItemsCount > 0) if (expectedItemsCount > 0)
{ {
case true:
_memoryBlocks = SetNewLength(_memoryBlocks, blockSize, expectedItemsCount.Value); _memoryBlocks = SetNewLength(_memoryBlocks, blockSize, expectedItemsCount.Value);
if (_memoryBlocks.Length > 0) if (_memoryBlocks.Length > 0)
{ {
@@ -187,20 +175,18 @@ namespace Recyclable.Collections
_blockSize = blockSize; _blockSize = blockSize;
_capacity = _memoryBlocks.Length * blockSize; _capacity = _memoryBlocks.Length * blockSize;
break; }
else
case false: {
_blockSize = blockSize; _blockSize = blockSize;
_memoryBlocks = _emptyMemoryBlocksArray; _memoryBlocks = _emptyMemoryBlocksArray;
break;
} }
} }
public RecyclableList(IEnumerable<T> source, int blockSize = RecyclableDefaults.BlockSize, long? expectedItemsCount = default) public RecyclableList(IEnumerable<T> source, int blockSize = RecyclableDefaults.BlockSize, long? expectedItemsCount = default)
{ {
switch (expectedItemsCount > 0) if (expectedItemsCount > 0)
{ {
case true:
_memoryBlocks = SetNewLength(_memoryBlocks, blockSize, expectedItemsCount.Value); _memoryBlocks = SetNewLength(_memoryBlocks, blockSize, expectedItemsCount.Value);
if (_memoryBlocks.Length > 0) if (_memoryBlocks.Length > 0)
{ {
@@ -209,12 +195,11 @@ namespace Recyclable.Collections
_blockSize = blockSize; _blockSize = blockSize;
_capacity = _memoryBlocks.Length * blockSize; _capacity = _memoryBlocks.Length * blockSize;
break; }
else
case false: {
_blockSize = blockSize; _blockSize = blockSize;
_memoryBlocks = _emptyMemoryBlocksArray; _memoryBlocks = _emptyMemoryBlocksArray;
break;
} }
AddRange(source); AddRange(source);
@@ -515,15 +500,13 @@ namespace Recyclable.Collections
public bool Remove(T item) => throw new NotSupportedException(); public bool Remove(T item) => throw new NotSupportedException();
public void RemoveBlock(int index) public void RemoveBlock(int index)
{ {
switch (_blockSize >= RecyclableDefaults.MinPooledArrayLength) if (_blockSize >= RecyclableDefaults.MinPooledArrayLength)
{ {
case true:
_blockArrayPool.Return(_memoryBlocks[index]); _blockArrayPool.Return(_memoryBlocks[index]);
break; }
else
case false: {
_memoryBlocks[index] = _emptyBlockArray; _memoryBlocks[index] = _emptyBlockArray;
break;
} }
_capacity -= _blockSize; _capacity -= _blockSize;