Tiny cleanup and performance improvements

This commit is contained in:
Marek Lemańczyk committed 2025-09-25 08:28:28 +02:00
1 parent 8b95a42f27
commit 845ce41dd8
1 file changed
+3 -4
+3 -4
View File
@@ -863,8 +863,7 @@ internal static class Program
for (int workerIndex = 0; workerIndex < workers.Length; workerIndex++) for (int workerIndex = 0; workerIndex < workers.Length; workerIndex++)
{ {
int capturedStateCount = stateCount; int capturedStateCount = stateCount;
workers[workerIndex] = Task.Factory.StartNew( workers[workerIndex] = Task.Factory.StartNew(() =>
() =>
{ {
using var session = _byDivisorTester!.CreateDivisorSession(); using var session = _byDivisorTester!.CreateDivisorSession();
byte[] hitsBuffer = ArrayPool<byte>.Shared.Rent(capturedStateCount); byte[] hitsBuffer = ArrayPool<byte>.Shared.Rent(capturedStateCount);
@@ -1018,7 +1017,7 @@ internal static class Program
private static ulong AcquireNextDivisor(ref ulong nextDivisor, ulong divisorLimit, ref int divisorsExhaustedFlag, ref long finalDivisorBits, out bool exhausted, ref ulong localDivisorCursor, ref int localDivisorsRemaining) private static ulong AcquireNextDivisor(ref ulong nextDivisor, ulong divisorLimit, ref int divisorsExhaustedFlag, ref long finalDivisorBits, out bool exhausted, ref ulong localDivisorCursor, ref int localDivisorsRemaining)
{ {
ref long nextDivisorBits = ref Unsafe.As<ulong, long>(ref nextDivisor); ref long nextDivisorBits = ref Unsafe.As<ulong, long>(ref nextDivisor);
ulong blockStride = unchecked((ulong)(DivisorAllocationBlockSize * 2)); ulong blockStride = unchecked(DivisorAllocationBlockSize * 2);
if (localDivisorsRemaining > 0) if (localDivisorsRemaining > 0)
{ {
@@ -1082,7 +1081,7 @@ internal static class Program
} }
} }
private static int BuildPrimeBuffer(ulong divisor, ulong[] primeValues, ulong[] allowedMaxValues, int[] stateFlags, ulong[] primeBuffer, int[] indexBuffer, PendingResult[] completionsBuffer, ref int completionsCount, ref int remainingStates, long[] activeStateMask, ref int activeStartIndex) private static int BuildPrimeBuffer(ulong divisor, in ulong[] primeValues, in ulong[] allowedMaxValues, int[] stateFlags, ulong[] primeBuffer, int[] indexBuffer, PendingResult[] completionsBuffer, ref int completionsCount, ref int remainingStates, long[] activeStateMask, ref int activeStartIndex)
{ {
int length = primeValues.Length; int length = primeValues.Length;
int startIndex = Volatile.Read(ref activeStartIndex); int startIndex = Volatile.Read(ref activeStartIndex);