Micro-optimizations for the best performance in BuildDivisorCandidates..
This commit is contained in:
1 parent
11bd89d8d0
commit
82737b99fd
1 file changed
+5
-6
@@ -916,10 +916,10 @@ internal static class Program
|
|||||||
private static (ulong divisor, uint cycle)[] BuildDivisorCandidates()
|
private static (ulong divisor, uint cycle)[] BuildDivisorCandidates()
|
||||||
{
|
{
|
||||||
uint[] snapshot = MersenneDivisorCycles.Shared.ExportSmallCyclesSnapshot();
|
uint[] snapshot = MersenneDivisorCycles.Shared.ExportSmallCyclesSnapshot();
|
||||||
List<(ulong divisor, uint cycle)> list = new(snapshot.Length / 2);
|
Span<(ulong divisor, uint cycle)> list = stackalloc (ulong divisor, uint cycle)[snapshot.Length / 2];// new(snapshot.Length / 2);
|
||||||
ulong d;
|
|
||||||
uint cycle;
|
uint cycle;
|
||||||
for (int i = 3; i < snapshot.Length; i += 2)
|
int count = 0, i, snapshotLength = snapshot.Length;
|
||||||
|
for (i = 3; i < snapshotLength; i += 2)
|
||||||
{
|
{
|
||||||
cycle = snapshot[i];
|
cycle = snapshot[i];
|
||||||
if (cycle == 0U)
|
if (cycle == 0U)
|
||||||
@@ -927,11 +927,10 @@ internal static class Program
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = (ulong)i;
|
list[count++] = ((ulong)i, cycle);
|
||||||
list.Add((d, cycle));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return list.ToArray();
|
return list[..count].ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsDivisible(ulong exponent, ulong divisor)
|
private static bool IsDivisible(ulong exponent, ulong divisor)
|
||||||
|
|||||||
Reference in new issue
Block a user