Cache capacity initialized for better performance
This commit is contained in:
1 parent
36a4617efe
commit
b76ef0b11a
1 file changed
+11
-10
@@ -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]
|
||||||
|
|||||||
Reference in new issue
Block a user