Extension methods benchmarked. Slower alternatives replaced.
This commit is contained in:
1 parent
9becb8df67
commit
6e99ee39e3
40 files changed
+930
-1026
No files matched your search
@@ -1,4 +1,3 @@
|
||||
using System.Numerics;
|
||||
using BenchmarkDotNet.Attributes;
|
||||
using PerfectNumbers.Core;
|
||||
|
||||
@@ -14,19 +13,21 @@ public class Mod10_8_5_3StepsBenchmarks
|
||||
public (ulong Mod10, ulong Mod8, ulong Mod3, ulong Mod5) LegacyModulo()
|
||||
{
|
||||
UInt128 value = Value;
|
||||
ulong mod10 = (ulong)(value % 10UL) % 10UL;
|
||||
ulong mod8 = (ulong)(value % 8UL);
|
||||
ulong mod3 = (ulong)(value % 3UL);
|
||||
ulong mod5 = (ulong)(value % 5UL);
|
||||
ulong mod10 = (((ulong)(value % 10UL)) << 1) % 10UL;
|
||||
ulong mod8 = (((ulong)(value & 7UL)) << 1) & 7UL;
|
||||
ulong mod5 = (((ulong)(value % 5UL)) << 1) % 5UL;
|
||||
ulong mod3 = (((ulong)(value % 3UL)) << 1) % 3UL;
|
||||
return (mod10, mod8, mod3, mod5);
|
||||
}
|
||||
|
||||
[Benchmark]
|
||||
/// <summary>
|
||||
/// Fastest
|
||||
/// </summary>
|
||||
[Benchmark]
|
||||
public (ulong Mod10, ulong Mod8, ulong Mod3, ulong Mod5) ModMethodModulo()
|
||||
{
|
||||
Value.Mod10_8_5_3(out ulong mod10, out ulong mod8, out ulong mod5, out ulong mod3);
|
||||
Value.Mod10_8_5_3Steps(out ulong mod10, out ulong mod8, out ulong mod5, out ulong mod3);
|
||||
// Step residues for q += 2*p
|
||||
mod10 %= 10UL;
|
||||
return (mod10, mod8, mod3, mod5);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user