Reuse heuristic prime order config across runtime
This commit is contained in:
1 parent
d99610098a
commit
e9cff7bfcd
2 files changed
+10
-1
No files matched your search
@@ -10,15 +10,23 @@ internal static partial class PrimeOrderCalculator
|
||||
|
||||
internal readonly struct PrimeOrderSearchConfig(uint smallFactorLimit, int pollardRhoMilliseconds, int maxPowChecks, PrimeOrderMode mode)
|
||||
{
|
||||
private static PrimeOrderSearchConfig _heuristicDefault = CreateHeuristicDefault(UnboundedTaskScheduler.ConfiguredThreadCount);
|
||||
|
||||
public static PrimeOrderSearchConfig HeuristicDefault
|
||||
{
|
||||
get
|
||||
{
|
||||
return CreateHeuristicDefault(UnboundedTaskScheduler.ConfiguredThreadCount);
|
||||
return _heuristicDefault;
|
||||
}
|
||||
}
|
||||
|
||||
public static readonly PrimeOrderSearchConfig StrictDefault = new(smallFactorLimit: 1_000_000, pollardRhoMilliseconds: 0, maxPowChecks: 0, PrimeOrderMode.Strict);
|
||||
|
||||
public static void ConfigureHeuristicDefault(int threadCount)
|
||||
{
|
||||
_heuristicDefault = CreateHeuristicDefault(threadCount);
|
||||
}
|
||||
|
||||
public static PrimeOrderSearchConfig CreateHeuristicDefault(int threadCount)
|
||||
{
|
||||
int normalizedThreadCount = threadCount < 1 ? 1 : threadCount;
|
||||
|
||||
@@ -40,6 +40,7 @@ public sealed class UnboundedTaskScheduler : TaskScheduler
|
||||
lock (InstanceLock)
|
||||
{
|
||||
Volatile.Write(ref _configuredThreadCount, normalizedThreadCount);
|
||||
PrimeOrderCalculator.PrimeOrderSearchConfig.ConfigureHeuristicDefault(normalizedThreadCount);
|
||||
|
||||
if (_instance is null)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user