From f864e73f67abafb9f638cbcdb7171bd232f88ac1 Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Sun, 25 Jan 2026 01:25:53 +0100 Subject: [PATCH] Benchmarks for static bit masks added. --- .../Pow2ProviderBenchmarks.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/EvenPerfectBitScanner.Benchmarks/Pow2ProviderBenchmarks.cs b/EvenPerfectBitScanner.Benchmarks/Pow2ProviderBenchmarks.cs index c518f50..deeddd0 100644 --- a/EvenPerfectBitScanner.Benchmarks/Pow2ProviderBenchmarks.cs +++ b/EvenPerfectBitScanner.Benchmarks/Pow2ProviderBenchmarks.cs @@ -198,6 +198,21 @@ namespace EvenPerfectBitScanner.Benchmarks _ => throw new ArgumentOutOfRangeException(nameof(i)), }; + private static readonly ulong[] BitMask64 = CreateBitMask64(); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static ulong[] CreateBitMask64() + { + ulong[] masks = new ulong[64]; + ulong value = 1UL; + for (int i = 0; i < 64; i++) + { + masks[i] = value; + value <<= 1; + } + return masks; + } + [Benchmark(Baseline = true)] public ulong ByShifting() { @@ -221,6 +236,19 @@ namespace EvenPerfectBitScanner.Benchmarks return result; } + + [Benchmark] + public ulong StaticArray() + { + ulong result = 0UL; + ulong[] bitMask64 = BitMask64; + for (int i = 0; i <= 63; i++) + { + result = bitMask64[i]; + } + + return result; + } } public class Pow2ProviderLongBenchmarks