Cache capacity initialized for better performance

This commit is contained in:
mlemanczyk committed 2025-10-17 03:51:06 +02:00
1 parent 36a4617efe
commit b76ef0b11a
1 file changed
+11 -10
+11 -10
View File
@@ -329,7 +329,7 @@ internal static partial class PrimeOrderCalculator
bool gpuStackRemainders = false; bool gpuStackRemainders = false;
GpuPow2ModStatus status = GpuPow2ModStatus.Unavailable; GpuPow2ModStatus status = GpuPow2ModStatus.Unavailable;
if (allowGpuBatch && IsGpuPow2Allowed) // if (allowGpuBatch && IsGpuPow2Allowed)
{ {
if (batchSize <= StackGpuBatchSize) if (batchSize <= StackGpuBatchSize)
{ {
@@ -650,20 +650,21 @@ internal static partial class PrimeOrderCalculator
private static bool Pow2EqualsOneCpu(ulong exponent, ulong prime, in MontgomeryDivisorData divisorData) private static bool Pow2EqualsOneCpu(ulong exponent, ulong prime, in MontgomeryDivisorData divisorData)
{ {
if (IsGpuPow2Allowed) // if (IsGpuPow2Allowed)
{ // {
GpuPow2ModStatus status = PrimeOrderGpuHeuristics.TryPow2Mod(exponent, prime, out ulong remainder, divisorData); ulong remainder = exponent.Pow2MontgomeryModWindowedGpu(divisorData, false);
if (status == GpuPow2ModStatus.Success) // GpuPow2ModStatus status = PrimeOrderGpuHeuristics.TryPow2Mod(exponent, prime, out ulong remainder, divisorData);
{ // if (status == GpuPow2ModStatus.Success)
// {
return remainder == 1UL; return remainder == 1UL;
} // }
} // }
return exponent.Pow2MontgomeryModWindowedCpu(divisorData, keepMontgomery: false) == 1UL; // return exponent.Pow2MontgomeryModWindowedCpu(divisorData, keepMontgomery: false) == 1UL;
} }
// [ThreadStatic] // [ThreadStatic]
private static readonly Dictionary<ulong, bool> _primalityCache = []; private static readonly Dictionary<ulong, bool> _primalityCache = new(16_777_216);
private static readonly ReaderWriterLockSlim _primalityCacheLock = new(LockRecursionPolicy.NoRecursion); private static readonly ReaderWriterLockSlim _primalityCacheLock = new(LockRecursionPolicy.NoRecursion);
// [ThreadStatic] // [ThreadStatic]