Hoist Pollard Rho deadline checks outside factoring loop

This commit is contained in:
Marek Lemańczyk committed 2025-10-17 01:14:51 +02:00
1 parent e63fba4df1
commit b81fe3de75
1 file changed
+14 -8
+14 -8
View File
@@ -852,7 +852,9 @@ internal static partial class PrimeOrderCalculator
compositeStack.Push(remaining); compositeStack.Push(remaining);
pending.Clear(); pending.Clear();
long timestamp = 0L; bool pollardRhoDeadlineReached = Stopwatch.GetTimestamp() > deadlineTimestamp;
if (!pollardRhoDeadlineReached)
{
while (compositeStack.Count > 0) while (compositeStack.Count > 0)
{ {
ulong composite = compositeStack.Pop(); ulong composite = compositeStack.Pop();
@@ -874,13 +876,6 @@ internal static partial class PrimeOrderCalculator
continue; continue;
} }
timestamp = Stopwatch.GetTimestamp();
if (timestamp > deadlineTimestamp)
{
pending.Add(composite);
continue;
}
if (!TryPollardRho(composite, deadlineTimestamp, out ulong factor)) if (!TryPollardRho(composite, deadlineTimestamp, out ulong factor))
{ {
pending.Add(composite); pending.Add(composite);
@@ -891,6 +886,17 @@ internal static partial class PrimeOrderCalculator
compositeStack.Push(factor); compositeStack.Push(factor);
compositeStack.Push(quotient); compositeStack.Push(quotient);
} }
pollardRhoDeadlineReached = Stopwatch.GetTimestamp() > deadlineTimestamp;
}
if (pollardRhoDeadlineReached)
{
while (compositeStack.Count > 0)
{
pending.Add(compositeStack.Pop());
}
}
} }
ulong cofactor = 1UL; ulong cofactor = 1UL;