Skip to content

perf(BitSet): add AggressiveInlining to Flip to match Get/Set (#253) - #277

Merged
marius-bughiu merged 2 commits into
mainfrom
claude/github-issue-253-980b03
Jul 18, 2026
Merged

perf(BitSet): add AggressiveInlining to Flip to match Get/Set (#253)#277
marius-bughiu merged 2 commits into
mainfrom
claude/github-issue-253-980b03

Conversation

@marius-bughiu

Copy link
Copy Markdown
Owner

What

Adds [MethodImpl(MethodImplOptions.AggressiveInlining)] to BitSet.Flip(int) so all three single-bit accessors carry the same inlining hint.

Flip sits between Get(int) and Set(int, bool) in src/Celerity/Collections/BitSet.cs and does the same bounded single-word work they do:

  • (uint)index >= (uint)_length bounds guard
  • 1UL << (index & WordMask) bit mask
  • ref ulong word = ref _words[index >> WordShift] word ref
  • mask/mutate (^=) + _version++

Both Get and Set were already marked [MethodImpl(AggressiveInlining)]; Flip was not. Given the three are structurally identical single-bit accessors, the missing attribute reads as an inlining asymmetry rather than a deliberate choice — a hot-path bit accessor the JIT was free to leave out-of-line while its siblings inlined.

Why

Consistency-of-intent in a library that inlines its accessors deliberately. No behavioural, API, or contract change — purely a codegen hint so all three accessors present the same inlining directive.

Testing

  • dotnet build -c Release — clean (0 warnings, 0 errors)
  • dotnet test --filter FullyQualifiedName~BitSet — 55/55 passing

Per the issue's scope note, the change is small enough to apply as a consistency fix matching Get/Set rather than gate on a dedicated benchmark.

Closes #253

🤖 Generated with Claude Code

BitSet.Flip(int) does the same bounded single-word mask/mutate work as
the two structurally-identical single-bit accessors that bracket it,
Get(int) and Set(int, bool), both of which already carry
[MethodImpl(MethodImplOptions.AggressiveInlining)]. The missing
attribute was an inlining asymmetry rather than a deliberate choice, so
Flip now presents the same inlining hint. No behavioural, API, or
contract change.

Closes #253

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 18, 2026 15:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Adds an inlining hint to BitSet.Flip(int) to make single-bit accessors (Get/Set/Flip) consistent, and documents the change in the changelog.

Changes:

  • Add [MethodImpl(MethodImplOptions.AggressiveInlining)] to BitSet.Flip(int)
  • Add a changelog entry describing the inlining consistency change

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/Celerity/Collections/BitSet.cs Adds AggressiveInlining attribute to Flip(int) for parity with Get/Set.
CHANGELOG.md Documents the Flip(int) inlining change.

Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md
Trim the [Unreleased] Flip entry down to what changed and why it matters
to a caller, dropping the private-field names, bit-shift steps, and JIT
rationale the automated reviewer flagged on #277. First example of the
changelog brevity convention tracked in #278.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@github-actions

Copy link
Copy Markdown

Coverage

Metric Value
Line 98.62% (6367/6456)
Branch 97.21% (2679/2756)
Files below 100% line coverage
File Line Branch
src/Celerity/Collections/TopKEntry.cs 80% n/a
src/Celerity/Collections/XorFilter.cs 94.29% 90%
src/Celerity/Collections/EnumMap.cs 95.09% 92.19%
src/Celerity/Collections/CuckooFilter.cs 96.6% 90.38%
src/Celerity/Collections/HyperLogLog.cs 96.61% 93.75%

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown

Benchmarks

8 regressions ⚠️ vs main, 2 improvements ✅ (rows past ±10% beyond noise).

Highlights

Benchmark This PR StdDev main Δ
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 1000) 33.54 μs 4.87 μs 28.13 μs +19.3% ⚠️
SwissSetBenchmark.HashSet_Remove(ItemCount: 1000) 33.17 μs 3.01 μs 27.05 μs +22.6% ⚠️
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 27.07 μs 2.08 μs 20.49 μs +32.1% ⚠️
DisjointSetBenchmark.Dictionary_Union(ElementCount: 100000) 47.51 ms 1.74 ms 53.74 ms -11.6% ✅
HashCachingSetBenchmark.HashSet_Add(ItemCount: 1000) 13.23 μs 418.6 ns 11.81 μs +12.1% ⚠️
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 1000) 14.37 μs 2.60 μs 10.83 μs +32.7% ⚠️
CeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 21.8 ns 5.36 μs -11.3% ✅
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 2.10 ms 149.24 μs 1.88 ms +11.5% ⚠️
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.06 μs 813.0 ns 12.44 μs +13.0% ⚠️
EnumMapBenchmark.EnumMap_Remove 2.78 μs 773.7 ns 1.11 μs +151.2% ⚠️
Collections (376)
Benchmark This PR StdDev main Δ
TopKSketchBenchmark.Dictionary_Add(ItemCount: 1000) 10.90 μs 133.4 ns 10.86 μs +0.4%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 1000) 57.90 μs 52.2 ns 57.95 μs -0.1%
TopKSketchBenchmark.Dictionary_Add(ItemCount: 100000) 2.51 ms 42.48 μs 2.50 ms +0.2%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 100000) 11.26 ms 25.36 μs 11.19 ms +0.6%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 1000) 25.8 ns 0.2 ns 25.7 ns +0.2%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 1000) 984.7 ns 13.4 ns 987.5 ns -0.3%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 100000) 25.8 ns 0.2 ns 26.4 ns -2.4%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 100000) 917.8 ns 8.7 ns 929.4 ns -1.3%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 1000) 10.51 μs 40.2 ns 10.57 μs -0.6%
LongSetBenchmark.HashSet_Add(ItemCount: 1000) 14.53 μs 504.3 ns 15.40 μs -5.6%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 1000) 13.85 μs 394.7 ns 13.47 μs +2.9%
LongSetBenchmark.LongSet_Add(ItemCount: 1000) 10.14 μs 250.9 ns 10.45 μs -3.0%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 100000) 1.51 ms 16.13 μs 1.53 ms -1.2%
LongSetBenchmark.HashSet_Add(ItemCount: 100000) 5.19 ms 82.58 μs 5.27 ms -1.6%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 100000) 1.14 ms 10.59 μs 1.13 ms +0.5%
LongSetBenchmark.LongSet_Add(ItemCount: 100000) 6.83 ms 70.51 μs 6.94 ms -1.7%
LongSetBenchmark.HashSet_Contains(ItemCount: 1000) 5.06 μs 4.9 ns 5.10 μs -0.6%
LongSetBenchmark.LongSet_Contains(ItemCount: 1000) 2.09 μs 9.1 ns 2.10 μs -0.0%
LongSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.53 ms 50.74 μs 1.58 ms -3.1%
LongSetBenchmark.LongSet_Contains(ItemCount: 100000) 582.06 μs 11.95 μs 583.95 μs -0.3%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 1000) 9.94 μs 55.4 ns 9.92 μs +0.2%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 1000) 5.47 μs 15.3 ns 5.47 μs -0.1%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 100000) 1.37 ms 21.61 μs 1.38 ms -0.7%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 100000) 658.26 μs 14.04 μs 644.59 μs +2.1%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 1000) 1.66 μs 1.7 ns 1.66 μs +0.4%
DequeBenchmark.Deque_Enumerate(ItemCount: 1000) 1.06 μs 1.6 ns 1.06 μs +0.0%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 100000) 152.39 μs 71.0 ns 152.46 μs -0.0%
DequeBenchmark.Deque_Enumerate(ItemCount: 100000) 105.71 μs 54.0 ns 105.81 μs -0.1%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 1000) 4.84 μs 198.8 ns 4.65 μs +4.1%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 1000) 8.48 μs 19.6 ns 8.49 μs -0.1%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 100000) 530.93 μs 485.1 ns 531.18 μs -0.0%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 100000) 2.28 ms 57.90 μs 2.34 ms -2.3%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.16 μs 454.6 ns 14.01 μs +1.1%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 1000) 11.28 μs 226.5 ns 10.39 μs +8.5%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.10 ms 56.52 μs 5.04 ms +1.2%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 100000) 7.54 ms 122.15 μs 7.50 ms +0.6%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.67 μs 16.6 ns 4.66 μs +0.4%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.84 μs 5.2 ns 4.72 μs +2.5%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 1000) 1.91 μs 8.0 ns 1.90 μs +0.2%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 1000) 2.85 μs 4.2 ns 2.88 μs -1.3%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 100000) 561.82 μs 16.84 μs 552.70 μs +1.7%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.61 ms 3.46 μs 1.61 ms +0.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 100000) 211.53 μs 208.5 ns 211.57 μs -0.0%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 100000) 858.45 μs 6.90 μs 843.59 μs +1.8%
DequeBenchmark.LinkedList_PushFront(ItemCount: 1000) 38.03 μs 3.13 μs 38.09 μs -0.2%
DequeBenchmark.Deque_PushFront(ItemCount: 1000) 21.25 μs 2.32 μs 19.92 μs +6.7%
DequeBenchmark.LinkedList_PushFront(ItemCount: 100000) 1.83 ms 24.61 μs 1.84 ms -0.6%
DequeBenchmark.Deque_PushFront(ItemCount: 100000) 748.04 μs 45.99 μs 709.62 μs +5.4%
DequeBenchmark.LinkedList_Queue(ItemCount: 1000) 49.37 μs 1.96 μs 52.32 μs -5.6%
DequeBenchmark.Deque_Queue(ItemCount: 1000) 28.05 μs 1.79 μs 29.44 μs -4.7%
DequeBenchmark.LinkedList_Queue(ItemCount: 100000) 5.02 ms 240.01 μs 5.02 ms -0.1%
DequeBenchmark.Deque_Queue(ItemCount: 100000) 496.13 μs 63.98 μs 494.15 μs +0.4%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 1000) 50.90 μs 5.70 μs 51.24 μs -0.7%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 83.10 μs 8.53 μs 80.45 μs +3.3%
LongSetBenchmark.HashSet_Remove(ItemCount: 1000) 77.18 μs 3.81 μs 76.04 μs +1.5%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 1000) 102.13 μs 6.34 μs 99.79 μs +2.3%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 1000) 112.22 μs 7.04 μs 115.41 μs -2.8%
LongSetBenchmark.LongSet_Remove(ItemCount: 1000) 78.49 μs 5.32 μs 85.55 μs -8.3%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 100000) 568.31 μs 13.82 μs 566.84 μs +0.3%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.31 ms 225.13 μs 2.24 ms +3.1%
LongSetBenchmark.HashSet_Remove(ItemCount: 100000) 2.05 ms 114.31 μs 2.19 ms -6.5%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 100000) 1.61 ms 9.18 μs 1.65 ms -2.6%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 100000) 2.26 ms 297.05 μs 2.41 ms -6.5%
LongSetBenchmark.LongSet_Remove(ItemCount: 100000) 1.85 ms 330.65 μs 2.06 ms -10.1%
IntSetBenchmark.HashSet_Add(ItemCount: 1000) 12.48 μs 228.8 ns 12.10 μs +3.1%
SwissSetBenchmark.HashSet_Add(ItemCount: 1000) 12.29 μs 64.3 ns 12.47 μs -1.5%
IntSetBenchmark.IntSet_Add(ItemCount: 1000) 8.79 μs 51.3 ns 8.66 μs +1.6%
SwissSetBenchmark.SwissSet_Add(ItemCount: 1000) 27.42 μs 945.2 ns 26.54 μs +3.3%
IntSetBenchmark.HashSet_Add(ItemCount: 100000) 5.03 ms 118.49 μs 5.05 ms -0.4%
SwissSetBenchmark.HashSet_Add(ItemCount: 100000) 4.73 ms 71.63 μs 4.70 ms +0.5%
IntSetBenchmark.IntSet_Add(ItemCount: 100000) 3.17 ms 21.68 μs 3.17 ms +0.1%
SwissSetBenchmark.SwissSet_Add(ItemCount: 100000) 4.57 ms 36.32 μs 4.60 ms -0.5%
BitSetBenchmark.BitArray_And(ItemCount: 1024) 55.0 ns 0.3 ns 61.9 ns -11.0%
BitSetBenchmark.BitSet_And(ItemCount: 1024) 1.25 μs 3.2 ns 1.25 μs -0.0%
BitSetBenchmark.BitArray_And(ItemCount: 1000000) 43.67 μs 503.3 ns 43.83 μs -0.4%
BitSetBenchmark.BitSet_And(ItemCount: 1000000) 4.47 ms 2.95 μs 4.48 ms -0.1%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 1000) 166.90 μs 772.3 ns 165.11 μs +1.1%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 2.48 ms 38.05 μs 2.49 ms -0.6%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 100000) 29.32 ms 389.35 μs 29.36 ms -0.1%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 100000) 1.42 s 45.65 ms 1.43 s -0.0%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 1000) 6.88 μs 12.4 ns 6.91 μs -0.5%
IntSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.73 μs 3.8 ns 4.75 μs -0.3%
SwissSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 39.8 ns 4.85 μs -2.2%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 1000) 90.48 μs 1.46 μs 89.21 μs +1.4%
IntSetBenchmark.IntSet_Contains(ItemCount: 1000) 1.81 μs 7.2 ns 1.81 μs +0.1%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 1000) 2.79 μs 12.0 ns 2.78 μs +0.2%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 100000) 1.95 ms 8.30 μs 1.95 ms +0.3%
IntSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.56 ms 17.72 μs 1.58 ms -1.3%
SwissSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.57 ms 15.79 μs 1.57 ms +0.1%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 100000) 7.44 ms 118.35 μs 7.34 ms +1.4%
IntSetBenchmark.IntSet_Contains(ItemCount: 100000) 573.04 μs 736.8 ns 573.80 μs -0.1%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 100000) 646.82 μs 2.63 μs 640.93 μs +0.9%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 4.4 ns 4.54 μs +0.0%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 1000) 2.36 μs 3.3 ns 2.37 μs -0.3%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.91 ms 18.49 μs 1.93 ms -0.8%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 100000) 353.40 μs 9.31 μs 350.11 μs +0.9%
LruCacheBenchmark.Dictionary_Get(ItemCount: 1000) 25.00 μs 242.7 ns 24.51 μs +2.0%
LruCacheBenchmark.LruCache_Get(ItemCount: 1000) 6.75 μs 10.6 ns 6.78 μs -0.3%
LruCacheBenchmark.Dictionary_Get(ItemCount: 100000) 25.09 μs 322.6 ns 24.99 μs +0.4%
LruCacheBenchmark.LruCache_Get(ItemCount: 100000) 7.11 μs 14.7 ns 6.90 μs +3.0%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 1000) 4.82 μs 82.4 ns 4.85 μs -0.6%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 1000) 3.49 μs 2.2 ns 3.50 μs -0.1%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 100000) 521.22 μs 1.87 μs 518.90 μs +0.4%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 100000) 1.38 ms 745.7 ns 1.37 ms +0.2%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 1000) 28.78 μs 398.1 ns 29.04 μs -0.9%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 1000) 37.51 μs 451.0 ns 38.76 μs -3.2%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 100000) 12.37 ms 852.84 μs 12.19 ms +1.4%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 100000) 17.04 ms 155.35 μs 16.77 ms +1.6%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.97 μs 87.0 ns 4.98 μs -0.2%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 1000) 2.26 μs 2.2 ns 2.28 μs -0.5%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.74 ms 5.80 μs 1.73 ms +0.6%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 100000) 716.41 μs 2.96 μs 712.05 μs +0.6%
BitSetBenchmark.BitArray_Or(ItemCount: 1024) 55.2 ns 0.9 ns 53.6 ns +2.9%
BitSetBenchmark.BitSet_Or(ItemCount: 1024) 1.24 μs 3.2 ns 1.21 μs +3.1%
BitSetBenchmark.BitArray_Or(ItemCount: 1000000) 43.68 μs 640.8 ns 43.47 μs +0.5%
BitSetBenchmark.BitSet_Or(ItemCount: 1000000) 4.47 ms 3.42 μs 4.47 ms -0.0%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1024) 1.24 μs 2.6 ns 1.24 μs -0.2%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1024) 7.1 ns 0.0 ns 7.1 ns -0.0%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1000000) 4.83 ms 2.99 μs 4.83 ms -0.0%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1000000) 4.94 μs 2.9 ns 4.93 μs +0.0%
LruCacheBenchmark.Dictionary_Put(ItemCount: 1000) 108.52 μs 11.00 μs 116.29 μs -6.7%
LruCacheBenchmark.LruCache_Put(ItemCount: 1000) 534.74 μs 22.18 μs 539.80 μs -0.9%
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 8.25 ms 50.80 μs 8.31 ms -0.8%
LruCacheBenchmark.LruCache_Put(ItemCount: 100000) 5.76 ms 19.47 μs 5.76 ms +0.0%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 1000) 33.54 μs 4.87 μs 28.13 μs +19.3% ⚠️
IntSetBenchmark.HashSet_Remove(ItemCount: 1000) 30.44 μs 4.37 μs 31.55 μs -3.5%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 1000) 145.32 μs 10.34 μs 150.21 μs -3.3%
IntSetBenchmark.IntSet_Remove(ItemCount: 1000) 86.65 μs 9.48 μs 86.90 μs -0.3%
SwissSetBenchmark.HashSet_Remove(ItemCount: 1000) 33.17 μs 3.01 μs 27.05 μs +22.6% ⚠️
SwissSetBenchmark.SwissSet_Remove(ItemCount: 1000) 68.32 μs 4.41 μs 67.69 μs +0.9%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 100000) 2.21 ms 216.15 μs 2.04 ms +8.1%
IntSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 16.89 μs 1.72 ms -0.6%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 100000) 1.97 ms 93.99 μs 1.76 ms +11.7%
IntSetBenchmark.IntSet_Remove(ItemCount: 100000) 1.33 ms 20.90 μs 1.33 ms +0.3%
SwissSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 14.77 μs 1.71 ms -0.1%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 100000) 1.07 ms 18.44 μs 1.07 ms -0.3%
BitSetBenchmark.BitArray_Xor(ItemCount: 1024) 54.6 ns 0.8 ns 52.7 ns +3.7%
BitSetBenchmark.BitSet_Xor(ItemCount: 1024) 1.24 μs 5.2 ns 1.20 μs +3.5%
BitSetBenchmark.BitArray_Xor(ItemCount: 1000000) 43.77 μs 443.7 ns 43.84 μs -0.1%
BitSetBenchmark.BitSet_Xor(ItemCount: 1000000) 4.47 ms 3.39 μs 4.47 ms +0.0%
SmallSetBenchmark.HashSet_Add(ItemCount: 8) 171.9 ns 4.6 ns 174.0 ns -1.3%
SmallSetBenchmark.SmallSet_Add(ItemCount: 8) 57.4 ns 0.6 ns 60.1 ns -4.6%
SmallSetBenchmark.HashSet_Add(ItemCount: 64) 791.7 ns 14.6 ns 834.1 ns -5.1%
SmallSetBenchmark.SmallSet_Add(ItemCount: 64) 1.59 μs 9.3 ns 1.92 μs -17.3%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 1000) 13.23 μs 189.8 ns 13.04 μs +1.5%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 1000) 14.40 μs 201.3 ns 13.84 μs +4.0%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 100000) 5.11 ms 90.18 μs 5.04 ms +1.3%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 100000) 6.63 ms 120.39 μs 6.79 ms -2.4%
DisjointSetBenchmark.Dictionary_Components(ElementCount: 1000) 17.96 μs 570.6 ns 18.26 μs -1.6%
DisjointSetBenchmark.DisjointSet_Components(ElementCount: 1000) 16.10 μs 153.2 ns 16.55 μs -2.8%
DisjointSetBenchmark.Dictionary_Components(ElementCount: 100000) 4.58 ms 107.70 μs 4.59 ms -0.2%
DisjointSetBenchmark.DisjointSet_Components(ElementCount: 100000) 3.24 ms 59.00 μs 3.44 ms -5.7%
DisjointSetBenchmark.Dictionary_Connected(ElementCount: 1000) 9.55 μs 24.0 ns 9.53 μs +0.2%
DisjointSetBenchmark.DisjointSet_Connected(ElementCount: 1000) 13.04 μs 19.5 ns 13.15 μs -0.9%
DisjointSetBenchmark.Dictionary_Connected(ElementCount: 100000) 159.15 μs 5.20 μs 155.04 μs +2.7%
DisjointSetBenchmark.DisjointSet_Connected(ElementCount: 100000) 284.05 μs 822.4 ns 283.64 μs +0.1%
SmallSetBenchmark.HashSet_Contains(ItemCount: 8) 38.0 ns 0.8 ns 37.4 ns +1.8%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 8) 20.0 ns 0.2 ns 19.9 ns +0.4%
SmallSetBenchmark.HashSet_Contains(ItemCount: 64) 303.0 ns 1.0 ns 309.4 ns -2.1%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 64) 931.7 ns 9.0 ns 927.6 ns +0.4%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.73 μs 8.1 ns 4.74 μs -0.1%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 1000) 2.77 μs 28.8 ns 2.74 μs +1.2%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.51 ms 3.01 μs 1.51 ms -0.3%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 100000) 769.30 μs 13.97 μs 765.51 μs +0.5%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.60 μs 35.0 ns 4.56 μs +0.8%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 1000) 2.70 μs 2.1 ns 2.70 μs -0.0%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.97 ms 2.77 μs 1.97 ms +0.2%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 100000) 1.28 ms 938.5 ns 1.28 ms +0.3%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 8) 169.1 ns 3.1 ns 173.3 ns -2.4%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 8) 77.8 ns 0.7 ns 77.0 ns +1.1%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 64) 842.8 ns 12.8 ns 813.2 ns +3.6%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 64) 1.04 μs 10.9 ns 1.05 μs -1.0%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.33 μs 270.0 ns 14.36 μs -7.1%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.17 μs 93.9 ns 13.75 μs -4.2%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 1000) 8.63 μs 151.8 ns 9.20 μs -6.3%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 1000) 8.26 μs 246.1 ns 8.46 μs -2.4%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.29 ms 67.19 μs 4.39 ms -2.3%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.19 ms 72.90 μs 5.30 ms -2.1%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 100000) 5.21 ms 90.41 μs 5.22 ms -0.3%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 100000) 3.25 ms 32.74 μs 3.21 ms +1.2%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 8) 38.4 ns 0.1 ns 38.3 ns +0.3%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 8) 23.2 ns 0.3 ns 23.3 ns -0.1%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 64) 308.4 ns 0.1 ns 304.6 ns +1.2%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 64) 970.5 ns 16.9 ns 968.9 ns +0.2%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.83 μs 5.3 ns 4.83 μs -0.0%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.83 μs 3.7 ns 4.84 μs -0.1%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 1000) 2.34 μs 218.5 ns 2.14 μs +9.5%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 1000) 2.37 μs 3.8 ns 2.60 μs -8.7%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.55 ms 55.89 μs 1.55 ms +0.3%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 4.42 μs 1.60 ms -0.0%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 100000) 696.38 μs 3.59 μs 696.38 μs -0.0%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 100000) 674.25 μs 30.28 μs 966.49 μs -30.2%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 8) 1.21 μs 102.8 ns 1.21 μs +0.0%
SmallSetBenchmark.HashSet_Remove(ItemCount: 8) 403.3 ns 69.9 ns 414.0 ns -2.6%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 8) 1.23 μs 185.6 ns 1.14 μs +7.9%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 8) 1.10 μs 160.0 ns 1.10 μs -0.2%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 64) 4.44 μs 603.0 ns 4.40 μs +0.7%
SmallSetBenchmark.HashSet_Remove(ItemCount: 64) 1.32 μs 197.2 ns 1.53 μs -13.9%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 64) 21.32 μs 574.0 ns 20.56 μs +3.7%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 27.07 μs 2.08 μs 20.49 μs +32.1% ⚠️
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 76.12 μs 7.88 μs 79.87 μs -4.7%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 79.47 μs 9.90 μs 81.03 μs -1.9%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 1000) 146.60 μs 8.93 μs 144.11 μs +1.7%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 1000) 147.42 μs 5.21 μs 145.98 μs +1.0%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 1000) 31.12 μs 2.47 μs 29.79 μs +4.5%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 1000) 132.56 μs 11.72 μs 138.18 μs -4.1%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.99 ms 16.44 μs 1.99 ms -0.4%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.02 ms 18.26 μs 2.01 ms +0.9%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 100000) 1.67 ms 25.58 μs 1.68 ms -0.3%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 100000) 1.71 ms 12.23 μs 1.68 ms +1.3%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 11.58 μs 1.70 ms +0.4%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 100000) 1.48 ms 39.13 μs 1.50 ms -1.2%
DisjointSetBenchmark.Dictionary_Union(ElementCount: 1000) 97.88 μs 1.30 μs 99.36 μs -1.5%
DisjointSetBenchmark.DisjointSet_Union(ElementCount: 1000) 27.80 μs 155.0 ns 27.92 μs -0.4%
DisjointSetBenchmark.Dictionary_Union(ElementCount: 100000) 47.51 ms 1.74 ms 53.74 ms -11.6% ✅
DisjointSetBenchmark.DisjointSet_Union(ElementCount: 100000) 7.93 ms 64.68 μs 7.99 ms -0.6%
EnumSetBenchmark.HashSet_Add 544.3 ns 1.6 ns 583.3 ns -6.7%
EnumSetBenchmark.EnumSet_Add 85.1 ns 2.7 ns 85.8 ns -0.8%
BloomFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.87 μs 673.9 ns 11.72 μs +9.8%
CeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 12.69 μs 178.0 ns 13.07 μs -2.9%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 1000) 13.23 μs 418.6 ns 11.81 μs +12.1% ⚠️
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 1000) 14.48 μs 27.9 ns 14.41 μs +0.5%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 1000) 8.85 μs 56.6 ns 8.79 μs +0.6%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 1000) 14.37 μs 2.60 μs 10.83 μs +32.7% ⚠️
BloomFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.70 ms 167.30 μs 4.56 ms +2.9%
CeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 5.01 ms 112.74 μs 5.00 ms +0.1%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 100000) 4.65 ms 415.95 μs 4.69 ms -0.9%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 100000) 1.09 ms 1.76 μs 1.10 ms -0.8%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 100000) 3.17 ms 26.41 μs 3.16 ms +0.3%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 100000) 5.46 ms 70.00 μs 5.17 ms +5.6%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 1000) 163.66 μs 1.28 μs 161.17 μs +1.5%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 1000) 3.51 ms 285.25 μs 3.69 ms -5.0%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 100000) 28.87 ms 497.48 μs 28.45 ms +1.5%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 100000) 1.97 s 152.03 ms 1.87 s +4.9%
EnumSetBenchmark.HashSet_Contains 175.1 ns 0.2 ns 175.3 ns -0.1%
EnumSetBenchmark.EnumSet_Contains 46.4 ns 0.5 ns 46.0 ns +0.7%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 39.3 ns 4.77 μs -0.4%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 21.8 ns 5.36 μs -11.3% ✅
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.73 μs 19.0 ns 4.73 μs +0.0%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 1000) 13.12 μs 8.6 ns 13.11 μs +0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 1000) 1.83 μs 36.2 ns 1.86 μs -1.5%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 1000) 2.43 μs 5.1 ns 2.43 μs +0.1%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.58 ms 3.33 μs 1.58 ms +0.2%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.55 ms 7.72 μs 1.55 ms +0.3%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.58 ms 15.08 μs 1.54 ms +2.6%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 100000) 869.26 μs 1.52 μs 868.90 μs +0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 100000) 584.74 μs 1.39 μs 585.82 μs -0.2%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 100000) 747.20 μs 1.72 μs 734.61 μs +1.7%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.57 μs 46.0 ns 4.54 μs +0.5%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.68 μs 147.4 ns 4.54 μs +3.1%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 1000) 3.55 μs 24.1 ns 3.53 μs +0.5%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 1000) 2.80 μs 5.9 ns 2.94 μs -4.6%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.93 ms 10.16 μs 1.92 ms +0.9%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 2.10 ms 149.24 μs 1.88 ms +11.5% ⚠️
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 100000) 1.49 ms 1.45 μs 1.49 ms +0.0%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 100000) 1.17 ms 2.73 μs 1.16 ms +1.0%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.26 μs 1.06 μs 13.88 μs +2.7%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.06 μs 813.0 ns 12.44 μs +13.0% ⚠️
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 1000) 11.81 μs 303.9 ns 11.50 μs +2.7%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 1000) 17.41 μs 155.8 ns 16.71 μs +4.2%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.10 ms 56.20 μs 4.08 ms +0.4%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.78 ms 115.12 μs 4.65 ms +2.6%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 100000) 4.85 ms 37.01 μs 4.83 ms +0.4%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 100000) 7.83 ms 584.05 μs 7.85 ms -0.3%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 1000) 7.58 μs 254.9 ns 7.34 μs +3.3%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.77 μs 64.3 ns 4.76 μs +0.2%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.74 μs 25.4 ns 4.77 μs -0.6%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 1000) 88.40 μs 3.20 μs 86.65 μs +2.0%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 1000) 2.15 μs 13.1 ns 2.14 μs +0.3%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 1000) 2.61 μs 2.5 ns 2.61 μs +0.0%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 100000) 1.91 ms 7.64 μs 1.95 ms -2.0%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.58 ms 2.85 μs 1.56 ms +1.0%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 4.18 μs 1.55 ms +3.4%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 100000) 7.38 ms 62.96 μs 7.28 ms +1.4%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 100000) 669.07 μs 1.67 μs 677.70 μs -1.3%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 100000) 829.40 μs 7.75 μs 819.11 μs +1.3%
EnumSetBenchmark.HashSet_Remove 3.03 μs 114.2 ns 3.26 μs -7.0%
EnumSetBenchmark.EnumSet_Remove 1.17 μs 236.1 ns 1.39 μs -15.6%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 26.32 μs 1.27 μs 30.74 μs -14.4%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 82.99 μs 7.19 μs 83.59 μs -0.7%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 82.16 μs 6.43 μs 82.59 μs -0.5%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 1000) 137.26 μs 9.87 μs 138.51 μs -0.9%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 1000) 94.68 μs 9.37 μs 89.77 μs +5.5%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 1000) 132.98 μs 6.17 μs 135.14 μs -1.6%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 1000) 28.78 μs 2.30 μs 28.30 μs +1.7%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 1000) 122.70 μs 16.27 μs 112.91 μs +8.7%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.72 ms 18.96 μs 1.72 ms -0.1%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.20 ms 237.81 μs 2.06 ms +6.6%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.04 ms 9.41 μs 2.03 ms +0.6%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 100000) 1.32 ms 60.35 μs 1.30 ms +1.2%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 2.62 ms 2.12 ms 1.60 ms +64.0%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 100000) 1.71 ms 65.91 μs 1.66 ms +2.8%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.73 ms 23.29 μs 1.70 ms +2.2%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 100000) 1.57 ms 121.59 μs 1.54 ms +2.1%
EnumSetBenchmark.HashSet_Union 402.4 ns 3.4 ns 418.1 ns -3.8%
EnumSetBenchmark.EnumSet_Union 20.9 ns 0.1 ns 22.9 ns -8.8%
EnumMapBenchmark.Dictionary_Add 706.0 ns 7.4 ns 676.7 ns +4.3%
EnumMapBenchmark.EnumMap_Add 160.7 ns 0.6 ns 159.8 ns +0.6%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.49 μs 296.3 ns 13.34 μs -6.4%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 1000) 13.20 μs 90.5 ns 12.65 μs +4.4%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 13.07 μs 233.4 ns 12.67 μs +3.2%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 1000) 5.72 μs 22.0 ns 5.87 μs -2.7%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 1000) 95.92 μs 156.7 ns 94.79 μs +1.2%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 1000) 7.97 μs 38.1 ns 7.49 μs +6.3%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 100000) 3.88 ms 124.06 μs 4.04 ms -3.9%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 100000) 4.45 ms 168.81 μs 4.35 ms +2.2%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 4.46 ms 319.07 μs 4.48 ms -0.5%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 100000) 2.25 ms 15.62 μs 2.30 ms -2.1%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 100000) 677.72 μs 3.22 μs 677.14 μs +0.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 100000) 3.21 ms 7.30 μs 3.20 ms +0.4%
XorFilterBenchmark.HashSet_Build(ItemCount: 1000) 7.11 μs 43.8 ns 7.08 μs +0.4%
XorFilterBenchmark.XorFilter_Build(ItemCount: 1000) 36.74 μs 516.0 ns 37.45 μs -1.9%
XorFilterBenchmark.HashSet_Build(ItemCount: 100000) 1.75 ms 29.94 μs 1.76 ms -0.4%
XorFilterBenchmark.XorFilter_Build(ItemCount: 100000) 10.38 ms 303.12 μs 10.75 ms -3.4%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 1000) 3.48 μs 21.2 ns 3.59 μs -3.0%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 3.48 μs 12.3 ns 3.46 μs +0.6%
XorFilterBenchmark.HashSet_Contains(ItemCount: 1000) 3.42 μs 4.5 ns 3.42 μs -0.1%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 1000) 4.21 μs 7.8 ns 4.34 μs -2.9%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 1000) 1.68 μs 3.2 ns 1.68 μs +0.1%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 1000) 5.97 μs 7.1 ns 5.96 μs +0.1%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.43 ms 6.46 μs 1.44 ms -1.1%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.42 ms 12.98 μs 1.40 ms +1.4%
XorFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.40 ms 2.75 μs 1.39 ms +0.2%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 100000) 1.94 ms 5.44 μs 2.00 ms -3.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 100000) 555.13 μs 1.74 μs 557.21 μs -0.4%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 100000) 639.75 μs 1.10 μs 640.14 μs -0.1%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 3.42 μs 38.2 ns 3.53 μs -3.2%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 3.47 μs 4.3 ns 3.47 μs -0.0%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 1000) 6.89 μs 7.8 ns 7.11 μs -3.2%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 1000) 5.96 μs 5.2 ns 5.97 μs -0.1%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.79 ms 21.18 μs 1.85 ms -3.2%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.75 ms 76.21 μs 1.83 ms -4.3%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 100000) 787.17 μs 701.9 ns 813.05 μs -3.2%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 100000) 639.96 μs 674.6 ns 638.97 μs +0.2%
EnumMapBenchmark.Dictionary_Enumerate 36.5 ns 0.2 ns 36.3 ns +0.7%
EnumMapBenchmark.EnumMap_Enumerate 32.4 ns 0.3 ns 32.5 ns -0.4%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 1000) 0.0 ns 0.0 ns 0.0 ns +66.5%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 1000) 92.69 μs 217.7 ns 93.02 μs -0.3%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 100000) 0.0 ns 0.0 ns 0.0 ns +117.3%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 100000) 92.92 μs 271.9 ns 93.02 μs -0.1%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 17.63 μs 288.7 ns 17.86 μs -1.3%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.28 μs 185.9 ns 14.79 μs -3.4%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 1000) 10.53 μs 135.1 ns 10.49 μs +0.3%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 1000) 21.62 μs 56.5 ns 22.25 μs -2.8%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.88 ms 180.55 μs 4.85 ms +0.7%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.19 ms 134.05 μs 4.39 ms -4.5%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 100000) 6.72 ms 66.43 μs 6.88 ms -2.3%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 100000) 2.86 ms 22.24 μs 2.89 ms -1.1%
EnumMapBenchmark.Dictionary_Lookup 91.6 ns 0.3 ns 90.9 ns +0.8%
EnumMapBenchmark.EnumMap_Lookup 54.4 ns 0.2 ns 53.9 ns +0.8%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 3.65 μs 10.6 ns 3.73 μs -2.4%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 3.51 μs 12.9 ns 3.60 μs -2.6%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 1000) 2.03 μs 3.1 ns 2.04 μs -0.4%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 1000) 2.78 μs 12.6 ns 2.86 μs -2.7%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.56 ms 5.68 μs 1.56 ms -0.2%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.45 ms 9.16 μs 1.46 ms -1.0%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 100000) 742.03 μs 4.94 μs 737.88 μs +0.6%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 100000) 591.86 μs 10.00 μs 606.64 μs -2.4%
EnumMapBenchmark.Dictionary_Remove 3.09 μs 1.02 μs 2.47 μs +24.9%
EnumMapBenchmark.EnumMap_Remove 2.78 μs 773.7 ns 1.11 μs +151.2% ⚠️
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 74.88 μs 12.47 μs 71.47 μs +4.8%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 31.02 μs 7.25 μs 24.98 μs +24.2%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 69.54 μs 10.66 μs 75.09 μs -7.4%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 1000) 78.24 μs 7.68 μs 73.33 μs +6.7%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 1000) 125.56 μs 8.71 μs 131.76 μs -4.7%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 58.84 μs 5.98 μs 67.11 μs -12.3%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 1000) 11.18 μs 24.5 ns 11.55 μs -3.2%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 1000) 10.32 μs 20.9 ns 10.67 μs -3.2%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.87 ms 23.47 μs 1.90 ms -1.5%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.65 ms 25.52 μs 1.63 ms +1.5%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.81 ms 21.84 μs 1.84 ms -1.8%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 100000) 1.82 ms 76.44 μs 1.81 ms +0.4%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 100000) 1.35 ms 65.83 μs 1.34 ms +0.8%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 100000) 1.65 ms 1.33 ms 1.03 ms +60.3%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 100000) 3.27 ms 41.54 μs 3.40 ms -3.6%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 100000) 4.30 ms 5.94 μs 4.45 ms -3.4%
Hashers (100)
Benchmark This PR StdDev main Δ
StringHasherBenchmark.Bcl_GetHashCode(Shape: ShortAscii) 12.92 μs 10.3 ns 12.92 μs -0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: ShortAscii) 12.90 μs 23.9 ns 12.89 μs +0.1%
StringHasherBenchmark.Djb2(Shape: ShortAscii) 18.50 μs 12.9 ns 18.50 μs +0.0%
StringHasherBenchmark.Djb2A(Shape: ShortAscii) 18.50 μs 7.9 ns 18.54 μs -0.2%
StringHasherBenchmark.Sdbm(Shape: ShortAscii) 26.87 μs 14.6 ns 26.87 μs +0.0%
StringHasherBenchmark.Elf(Shape: ShortAscii) 33.45 μs 15.4 ns 33.44 μs +0.0%
StringHasherBenchmark.Crc32(Shape: ShortAscii) 42.62 μs 305.1 ns 42.44 μs +0.4%
StringHasherBenchmark.Adler32(Shape: ShortAscii) 84.24 μs 24.6 ns 84.23 μs +0.0%
StringHasherBenchmark.FnV1(Shape: ShortAscii) 22.19 μs 61.3 ns 22.17 μs +0.1%
StringHasherBenchmark.FnV1_64(Shape: ShortAscii) 21.72 μs 8.4 ns 21.73 μs -0.0%
StringHasherBenchmark.FnV1A(Shape: ShortAscii) 8.98 μs 919.6 ns 9.88 μs -9.1%
StringHasherBenchmark.FnV1A_Full(Shape: ShortAscii) 19.11 μs 29.7 ns 19.13 μs -0.1%
StringHasherBenchmark.FnV1A_64(Shape: ShortAscii) 22.90 μs 20.1 ns 22.89 μs +0.0%
StringHasherBenchmark.JenkinsOaat(Shape: ShortAscii) 31.83 μs 41.5 ns 31.84 μs -0.0%
StringHasherBenchmark.Murmur2(Shape: ShortAscii) 12.27 μs 70.9 ns 12.34 μs -0.6%
StringHasherBenchmark.Murmur3(Shape: ShortAscii) 14.14 μs 74.7 ns 14.12 μs +0.1%
StringHasherBenchmark.XxHash32(Shape: ShortAscii) 13.51 μs 18.8 ns 13.53 μs -0.1%
StringHasherBenchmark.XxHash64(Shape: ShortAscii) 15.44 μs 7.2 ns 15.45 μs -0.0%
StringHasherBenchmark.XxHash3(Shape: ShortAscii) 14.03 μs 5.0 ns 14.07 μs -0.2%
StringHasherBenchmark.CityHash64(Shape: ShortAscii) 12.90 μs 16.7 ns 12.90 μs -0.0%
StringHasherBenchmark.MetroHash64(Shape: ShortAscii) 13.07 μs 3.1 ns 13.06 μs +0.1%
StringHasherBenchmark.SipHash13(Shape: ShortAscii) 23.81 μs 13.3 ns 23.81 μs -0.0%
StringHasherBenchmark.SipHash24(Shape: ShortAscii) 33.53 μs 15.6 ns 33.53 μs -0.0%
StringHasherBenchmark.HalfSipHash24(Shape: ShortAscii) 43.44 μs 27.3 ns 43.46 μs -0.1%
StringHasherBenchmark.HighwayHash64(Shape: ShortAscii) 347.57 μs 546.4 ns 347.85 μs -0.1%
StringHasherBenchmark.Bcl_GetHashCode(Shape: LongAscii) 83.90 μs 23.3 ns 83.88 μs +0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: LongAscii) 84.21 μs 213.9 ns 84.11 μs +0.1%
StringHasherBenchmark.Djb2(Shape: LongAscii) 192.13 μs 213.9 ns 192.12 μs +0.0%
StringHasherBenchmark.Djb2A(Shape: LongAscii) 192.14 μs 132.5 ns 191.96 μs +0.1%
StringHasherBenchmark.Sdbm(Shape: LongAscii) 265.92 μs 116.3 ns 265.89 μs +0.0%
StringHasherBenchmark.Elf(Shape: LongAscii) 484.47 μs 596.8 ns 484.11 μs +0.1%
StringHasherBenchmark.Crc32(Shape: LongAscii) 513.00 μs 174.5 ns 513.07 μs -0.0%
StringHasherBenchmark.Adler32(Shape: LongAscii) 684.92 μs 760.5 ns 684.18 μs +0.1%
StringHasherBenchmark.FnV1(Shape: LongAscii) 249.74 μs 214.4 ns 249.81 μs -0.0%
StringHasherBenchmark.FnV1_64(Shape: LongAscii) 247.99 μs 56.8 ns 247.96 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: LongAscii) 103.18 μs 144.8 ns 103.14 μs +0.0%
StringHasherBenchmark.FnV1A_Full(Shape: LongAscii) 242.76 μs 155.8 ns 242.79 μs -0.0%
StringHasherBenchmark.FnV1A_64(Shape: LongAscii) 247.74 μs 77.9 ns 247.72 μs +0.0%
StringHasherBenchmark.JenkinsOaat(Shape: LongAscii) 327.61 μs 115.2 ns 327.57 μs +0.0%
StringHasherBenchmark.Murmur2(Shape: LongAscii) 77.01 μs 2.55 μs 76.55 μs +0.6%
StringHasherBenchmark.Murmur3(Shape: LongAscii) 87.58 μs 541.5 ns 87.39 μs +0.2%
StringHasherBenchmark.XxHash32(Shape: LongAscii) 59.39 μs 46.0 ns 59.41 μs -0.0%
StringHasherBenchmark.XxHash64(Shape: LongAscii) 72.51 μs 19.2 ns 72.50 μs +0.0%
StringHasherBenchmark.XxHash3(Shape: LongAscii) 65.61 μs 35.7 ns 65.66 μs -0.1%
StringHasherBenchmark.CityHash64(Shape: LongAscii) 103.29 μs 33.0 ns 103.37 μs -0.1%
StringHasherBenchmark.MetroHash64(Shape: LongAscii) 63.87 μs 68.7 ns 63.79 μs +0.1%
StringHasherBenchmark.SipHash13(Shape: LongAscii) 89.79 μs 188.1 ns 89.74 μs +0.1%
StringHasherBenchmark.SipHash24(Shape: LongAscii) 131.80 μs 400.0 ns 131.63 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: LongAscii) 210.92 μs 285.5 ns 211.39 μs -0.2%
StringHasherBenchmark.HighwayHash64(Shape: LongAscii) 606.70 μs 7.05 μs 598.11 μs +1.4%
StringHasherBenchmark.Bcl_GetHashCode(Shape: NonAscii) 19.45 μs 13.3 ns 19.45 μs +0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: NonAscii) 19.40 μs 5.5 ns 19.40 μs -0.0%
StringHasherBenchmark.Djb2(Shape: NonAscii) 33.55 μs 25.6 ns 33.52 μs +0.1%
StringHasherBenchmark.Djb2A(Shape: NonAscii) 33.56 μs 63.9 ns 33.55 μs +0.0%
StringHasherBenchmark.Sdbm(Shape: NonAscii) 50.51 μs 57.9 ns 50.49 μs +0.0%
StringHasherBenchmark.Elf(Shape: NonAscii) 68.02 μs 17.8 ns 68.03 μs -0.0%
StringHasherBenchmark.Crc32(Shape: NonAscii) 86.65 μs 24.2 ns 86.69 μs -0.1%
StringHasherBenchmark.Adler32(Shape: NonAscii) 150.06 μs 138.4 ns 149.99 μs +0.0%
StringHasherBenchmark.FnV1(Shape: NonAscii) 39.60 μs 30.0 ns 39.59 μs +0.0%
StringHasherBenchmark.FnV1_64(Shape: NonAscii) 39.72 μs 61.9 ns 39.68 μs +0.1%
StringHasherBenchmark.FnV1A(Shape: NonAscii) 14.45 μs 16.1 ns 14.45 μs +0.0%
StringHasherBenchmark.FnV1A_Full(Shape: NonAscii) 36.30 μs 32.2 ns 36.30 μs +0.0%
StringHasherBenchmark.FnV1A_64(Shape: NonAscii) 40.21 μs 23.2 ns 40.21 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: NonAscii) 60.31 μs 35.4 ns 60.28 μs +0.0%
StringHasherBenchmark.Murmur2(Shape: NonAscii) 18.97 μs 28.7 ns 18.96 μs +0.1%
StringHasherBenchmark.Murmur3(Shape: NonAscii) 21.48 μs 25.5 ns 21.46 μs +0.1%
StringHasherBenchmark.XxHash32(Shape: NonAscii) 19.09 μs 16.8 ns 19.06 μs +0.1%
StringHasherBenchmark.XxHash64(Shape: NonAscii) 24.89 μs 13.0 ns 24.91 μs -0.1%
StringHasherBenchmark.XxHash3(Shape: NonAscii) 22.43 μs 21.3 ns 22.42 μs +0.1%
StringHasherBenchmark.CityHash64(Shape: NonAscii) 18.42 μs 25.2 ns 18.41 μs +0.0%
StringHasherBenchmark.MetroHash64(Shape: NonAscii) 21.76 μs 73.3 ns 21.74 μs +0.1%
StringHasherBenchmark.SipHash13(Shape: NonAscii) 30.81 μs 13.7 ns 30.82 μs -0.0%
StringHasherBenchmark.SipHash24(Shape: NonAscii) 44.18 μs 14.6 ns 44.19 μs -0.0%
StringHasherBenchmark.HalfSipHash24(Shape: NonAscii) 61.49 μs 74.0 ns 61.51 μs -0.0%
StringHasherBenchmark.HighwayHash64(Shape: NonAscii) 387.47 μs 9.34 μs 381.77 μs +1.5%
IntegerHasherBenchmark.Guid_Bcl 1.50 μs 6.7 ns 1.50 μs +0.0%
IntegerHasherBenchmark.Guid_EqualityComparer 3.44 μs 39.8 ns 3.44 μs +0.1%
IntegerHasherBenchmark.Guid_Celerity 9.13 μs 20.0 ns 9.13 μs -0.0%
IntegerHasherBenchmark.Int32_Bcl 774.5 ns 1.0 ns 752.8 ns +2.9%
IntegerHasherBenchmark.Int32_EqualityComparer 764.3 ns 0.5 ns 767.2 ns -0.4%
IntegerHasherBenchmark.Int32_Identity 753.5 ns 10.7 ns 764.5 ns -1.4%
IntegerHasherBenchmark.Int32_WangNaive 1.41 μs 1.9 ns 1.41 μs +0.0%
IntegerHasherBenchmark.Int32_Wang 3.42 μs 3.0 ns 3.42 μs -0.0%
IntegerHasherBenchmark.Int32_Murmur3 3.06 μs 4.7 ns 3.06 μs -0.0%
IntegerHasherBenchmark.Int64_Bcl 1.68 μs 1.4 ns 1.68 μs +0.0%
IntegerHasherBenchmark.Int64_EqualityComparer 1.41 μs 1.7 ns 1.41 μs -0.0%
IntegerHasherBenchmark.Int64_Identity 764.9 ns 1.8 ns 764.8 ns +0.0%
IntegerHasherBenchmark.Int64_WangNaive 2.11 μs 2.2 ns 2.11 μs -0.0%
IntegerHasherBenchmark.Int64_Wang 4.70 μs 3.2 ns 4.70 μs -0.1%
IntegerHasherBenchmark.Int64_Murmur3 2.68 μs 0.9 ns 2.68 μs -0.1%
IntegerHasherBenchmark.UInt32_Bcl 774.2 ns 0.7 ns 774.1 ns +0.0%
IntegerHasherBenchmark.UInt32_EqualityComparer 759.4 ns 5.6 ns 764.3 ns -0.6%
IntegerHasherBenchmark.UInt32_Default 1.41 μs 0.5 ns 1.41 μs +0.0%
IntegerHasherBenchmark.UInt32_Wang 3.42 μs 4.2 ns 3.42 μs +0.1%
IntegerHasherBenchmark.UInt32_Murmur3 3.05 μs 2.8 ns 3.05 μs +0.1%
IntegerHasherBenchmark.UInt64_Bcl 1.68 μs 2.1 ns 1.68 μs +0.1%
IntegerHasherBenchmark.UInt64_EqualityComparer 1.41 μs 2.7 ns 1.41 μs +0.1%
IntegerHasherBenchmark.UInt64_Default 2.68 μs 1.5 ns 2.68 μs -0.1%
IntegerHasherBenchmark.UInt64_Wang 4.71 μs 15.4 ns 4.70 μs +0.1%
IntegerHasherBenchmark.UInt64_WangNaive 2.10 μs 0.8 ns 2.11 μs -0.1%

Same-runner A/B (sharded 6-way): main (08db985) and this PR were built and benchmarked back-to-back on the same runner per shard, so hardware variance cancels out. ⚠️ = PR mean ≥ +10% slower than main and beyond combined std-dev; ✅ = correspondingly faster.

@marius-bughiu
marius-bughiu merged commit 3aaba16 into main Jul 18, 2026
14 checks passed
@marius-bughiu
marius-bughiu deleted the claude/github-issue-253-980b03 branch July 24, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BitSet.Flip missing [MethodImpl(AggressiveInlining)] that Get/Set carry

2 participants