Skip to content

docs(FrozenCeleritySet): document ArgumentException on the derived ctor - #294

Merged
marius-bughiu merged 1 commit into
mainfrom
chore/code-review/frozenset-ctor-exception-doc
Jul 23, 2026
Merged

docs(FrozenCeleritySet): document ArgumentException on the derived ctor#294
marius-bughiu merged 1 commit into
mainfrom
chore/code-review/frozenset-ctor-exception-doc

Conversation

@marius-bughiu

Copy link
Copy Markdown
Owner

What

Added the missing <exception cref="ArgumentException"> element to the non-generic FrozenCeleritySet(IEnumerable<string>) constructor's XML docs.

Why

That constructor is : base(source) over FrozenCeleritySet<THasher>(IEnumerable<string>), whose documented (and reachable) contract throws ArgumentException when source holds 2^30 or more distinct non-null elements — a count a power-of-two frozen table cannot represent. The derived ctor documented only ArgumentNullException, so a caller reading its docs would not see the size-ceiling exception.

The parallel type FrozenCelerityDictionary already carries this ArgumentException doc on its derived ctor, so this change restores doc parity between the two frozen collections.

Doc-only change; no behavioral impact.

Test plan

  • dotnet build — succeeds, 0 errors (no CS1591/doc warnings)
  • Doc-only change; runtime behavior and existing tests unaffected

The non-generic FrozenCeleritySet ctor forwards to the base
FrozenCeleritySet<THasher> ctor, which throws ArgumentException when the
source holds 2^30 or more distinct non-null elements. That path is
reachable through the derived ctor but only ArgumentNullException was
documented on it. The sibling FrozenCelerityDictionary derived ctor
already carries this exception doc; this restores parity.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 23, 2026 00:16
@marius-bughiu marius-bughiu added the automated:code-review PR or issue opened by celerity---code-review sweep label Jul 23, 2026

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

This PR updates the XML documentation for FrozenCeleritySet(IEnumerable<string>) to accurately reflect the exception contract inherited from its generic base constructor, improving API documentation parity with FrozenCelerityDictionary and avoiding surprises for callers.

Changes:

  • Documented the reachable ArgumentException thrown when source contains 2^30 or more distinct non-null elements.
  • Kept derived-constructor documentation consistent with the base FrozenCeleritySet<THasher>(IEnumerable<string>) contract.

@github-actions

Copy link
Copy Markdown

Coverage

Metric Value
Line 98.55% (6571/6668)
Branch 96.98% (2758/2844)
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/IndexedPriorityQueue.cs 96.23% 90.91%
src/Celerity/Collections/CuckooFilter.cs 96.6% 89.42%

@github-actions

Copy link
Copy Markdown

Benchmarks

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

Highlights

Benchmark This PR StdDev main Δ
DequeBenchmark.LinkedList_PushFront(ItemCount: 100000) 1.08 ms 29.98 μs 960.24 μs +12.1% ⚠️
BitSetBenchmark.BitArray_And(ItemCount: 1024) 70.2 ns 1.3 ns 84.4 ns -16.9% ✅
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 2.00 ms 79.74 μs 1.81 ms +10.4% ⚠️
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 1000) 23.67 μs 389.2 ns 21.35 μs +10.9% ⚠️
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 6.16 ms 67.97 μs 5.04 ms +22.1% ⚠️
DisjointSetBenchmark.DisjointSet_Connected(ItemCount: 100000) 414.50 μs 54.00 μs 346.69 μs +19.6% ⚠️
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 8) 86.0 ns 0.7 ns 94.6 ns -9.1% ✅
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.32 μs 210.8 ns 15.21 μs -12.5% ✅
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.06 ms 14.42 μs 2.32 ms -11.3% ✅
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 100000) 1.57 ms 14.24 μs 1.79 ms -12.5% ✅
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 100000) 1.36 ms 23.78 μs 1.60 ms -15.3% ✅
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 1000) 3.96 ms 212.08 μs 3.48 ms +13.7% ⚠️
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 100000) 10.12 ms 770.32 μs 8.46 ms +19.7% ⚠️
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 6.37 ms 29.18 μs 2.55 ms +150.1% ⚠️
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 1000) 6.49 μs 3.44 μs 2.99 μs +117.3% ⚠️
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 1000) 100.77 μs 3.93 μs 88.42 μs +14.0% ⚠️
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 72.07 μs 2.62 μs 81.40 μs -11.5% ✅
Collections (384)
Benchmark This PR StdDev main Δ
TopKSketchBenchmark.Dictionary_Add(ItemCount: 1000) 13.09 μs 225.4 ns 13.32 μs -1.7%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 1000) 82.65 μs 687.0 ns 82.33 μs +0.4%
TopKSketchBenchmark.Dictionary_Add(ItemCount: 100000) 3.36 ms 41.29 μs 3.34 ms +0.5%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 100000) 13.73 ms 17.16 μs 13.78 ms -0.4%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 1000) 31.1 ns 0.8 ns 30.0 ns +3.7%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 1000) 1.28 μs 13.6 ns 1.23 μs +4.0%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 100000) 31.5 ns 1.6 ns 29.7 ns +6.0%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 100000) 1.23 μs 34.7 ns 1.22 μs +0.8%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 1000) 5.71 μs 31.5 ns 5.33 μs +7.0%
LongSetBenchmark.HashSet_Add(ItemCount: 1000) 6.37 μs 118.2 ns 6.68 μs -4.6%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 1000) 6.02 μs 181.3 ns 5.55 μs +8.5%
LongSetBenchmark.LongSet_Add(ItemCount: 1000) 4.29 μs 191.9 ns 5.56 μs -22.8%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 100000) 824.47 μs 13.01 μs 787.60 μs +4.7%
LongSetBenchmark.HashSet_Add(ItemCount: 100000) 2.94 ms 98.87 μs 2.90 ms +1.4%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 100000) 549.98 μs 3.16 μs 538.35 μs +2.2%
LongSetBenchmark.LongSet_Add(ItemCount: 100000) 4.82 ms 134.74 μs 4.75 ms +1.5%
LongSetBenchmark.HashSet_Contains(ItemCount: 1000) 2.71 μs 18.6 ns 2.67 μs +1.5%
LongSetBenchmark.LongSet_Contains(ItemCount: 1000) 1.25 μs 12.8 ns 1.20 μs +4.2%
LongSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.00 ms 17.78 μs 984.59 μs +1.8%
LongSetBenchmark.LongSet_Contains(ItemCount: 100000) 399.78 μs 7.76 μs 404.07 μs -1.1%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 1000) 5.09 μs 63.8 ns 5.36 μs -5.0%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 1000) 2.55 μs 64.4 ns 2.61 μs -2.5%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 100000) 764.41 μs 16.10 μs 775.90 μs -1.5%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 100000) 375.74 μs 5.06 μs 386.38 μs -2.8%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 1000) 917.1 ns 3.4 ns 940.6 ns -2.5%
DequeBenchmark.Deque_Enumerate(ItemCount: 1000) 477.5 ns 14.5 ns 464.4 ns +2.8%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 100000) 97.27 μs 2.25 μs 95.95 μs +1.4%
DequeBenchmark.Deque_Enumerate(ItemCount: 100000) 49.13 μs 893.9 ns 47.74 μs +2.9%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 1000) 2.59 μs 8.8 ns 2.49 μs +4.1%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 1000) 4.44 μs 15.3 ns 4.24 μs +4.6%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 100000) 299.46 μs 1.76 μs 283.52 μs +5.6%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 100000) 1.62 ms 25.34 μs 1.54 ms +5.2%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 6.60 μs 274.6 ns 6.51 μs +1.4%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 1000) 5.15 μs 191.9 ns 5.01 μs +2.9%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 3.37 ms 127.23 μs 3.18 ms +5.8%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 100000) 4.82 ms 277.89 μs 4.76 ms +1.3%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 1000) 2.38 μs 44.6 ns 2.49 μs -4.4%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 2.49 μs 68.5 ns 2.46 μs +1.2%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 1000) 903.3 ns 7.4 ns 930.5 ns -2.9%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 1000) 1.49 μs 32.0 ns 1.51 μs -0.8%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 100000) 297.83 μs 18.51 μs 292.02 μs +2.0%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.03 ms 11.63 μs 962.40 μs +7.2%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 100000) 102.07 μs 281.9 ns 105.46 μs -3.2%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 100000) 480.42 μs 15.32 μs 466.78 μs +2.9%
DequeBenchmark.LinkedList_PushFront(ItemCount: 1000) 21.05 μs 1.72 μs 21.63 μs -2.7%
DequeBenchmark.Deque_PushFront(ItemCount: 1000) 13.04 μs 2.74 μs 11.41 μs +14.3%
DequeBenchmark.LinkedList_PushFront(ItemCount: 100000) 1.08 ms 29.98 μs 960.24 μs +12.1% ⚠️
DequeBenchmark.Deque_PushFront(ItemCount: 100000) 360.38 μs 5.15 μs 386.26 μs -6.7%
DequeBenchmark.LinkedList_Queue(ItemCount: 1000) 28.88 μs 2.43 μs 27.62 μs +4.6%
DequeBenchmark.Deque_Queue(ItemCount: 1000) 16.84 μs 2.01 μs 16.12 μs +4.4%
DequeBenchmark.LinkedList_Queue(ItemCount: 100000) 2.86 ms 30.28 μs 2.62 ms +9.1%
DequeBenchmark.Deque_Queue(ItemCount: 100000) 313.11 μs 99.19 μs 220.54 μs +42.0%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 1000) 28.17 μs 4.17 μs 30.39 μs -7.3%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 44.15 μs 5.58 μs 48.42 μs -8.8%
LongSetBenchmark.HashSet_Remove(ItemCount: 1000) 39.97 μs 4.23 μs 43.48 μs -8.1%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 1000) 56.74 μs 5.67 μs 59.36 μs -4.4%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 1000) 65.96 μs 2.32 μs 65.59 μs +0.6%
LongSetBenchmark.LongSet_Remove(ItemCount: 1000) 42.56 μs 4.57 μs 42.95 μs -0.9%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 100000) 324.40 μs 11.30 μs 319.02 μs +1.7%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.13 ms 7.71 μs 1.15 ms -1.1%
LongSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.11 ms 5.08 μs 1.13 ms -2.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 100000) 950.22 μs 27.99 μs 935.70 μs +1.6%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 100000) 2.58 ms 1.55 ms 2.75 ms -6.3%
LongSetBenchmark.LongSet_Remove(ItemCount: 100000) 983.41 μs 21.37 μs 1.04 ms -5.5%
IntSetBenchmark.HashSet_Add(ItemCount: 1000) 10.20 μs 115.0 ns 10.11 μs +0.9%
SwissSetBenchmark.HashSet_Add(ItemCount: 1000) 10.12 μs 196.8 ns 10.09 μs +0.3%
IntSetBenchmark.IntSet_Add(ItemCount: 1000) 7.17 μs 83.9 ns 7.42 μs -3.3%
SwissSetBenchmark.SwissSet_Add(ItemCount: 1000) 20.29 μs 120.7 ns 20.30 μs -0.1%
IntSetBenchmark.HashSet_Add(ItemCount: 100000) 4.32 ms 138.28 μs 4.30 ms +0.5%
SwissSetBenchmark.HashSet_Add(ItemCount: 100000) 4.03 ms 68.39 μs 4.07 ms -1.0%
IntSetBenchmark.IntSet_Add(ItemCount: 100000) 2.70 ms 11.35 μs 2.70 ms -0.2%
SwissSetBenchmark.SwissSet_Add(ItemCount: 100000) 3.61 ms 110.79 μs 3.64 ms -0.6%
BitSetBenchmark.BitArray_And(ItemCount: 1024) 70.2 ns 1.3 ns 84.4 ns -16.9% ✅
BitSetBenchmark.BitSet_And(ItemCount: 1024) 954.4 ns 3.2 ns 955.3 ns -0.1%
BitSetBenchmark.BitArray_And(ItemCount: 1000000) 35.60 μs 376.2 ns 35.84 μs -0.7%
BitSetBenchmark.BitSet_And(ItemCount: 1000000) 3.91 ms 8.15 μs 3.91 ms +0.1%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 1000) 135.52 μs 1.35 μs 133.60 μs +1.4%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 2.00 ms 79.74 μs 1.81 ms +10.4% ⚠️
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 100000) 23.48 ms 225.47 μs 22.51 ms +4.3%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 100000) 1.24 s 83.54 ms 1.22 s +1.0%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 1000) 5.53 μs 6.4 ns 5.53 μs +0.0%
IntSetBenchmark.HashSet_Contains(ItemCount: 1000) 3.65 μs 1.5 ns 3.65 μs -0.1%
SwissSetBenchmark.HashSet_Contains(ItemCount: 1000) 3.67 μs 7.0 ns 3.89 μs -5.5%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 1000) 64.74 μs 144.6 ns 66.94 μs -3.3%
IntSetBenchmark.IntSet_Contains(ItemCount: 1000) 1.49 μs 19.0 ns 1.49 μs -0.2%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 1000) 2.12 μs 6.0 ns 2.13 μs -0.2%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 100000) 1.44 ms 6.27 μs 1.44 ms +0.1%
IntSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.17 ms 2.39 μs 1.17 ms +0.2%
SwissSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.20 ms 33.44 μs 1.17 ms +2.8%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 100000) 6.36 ms 27.14 μs 6.40 ms -0.7%
IntSetBenchmark.IntSet_Contains(ItemCount: 100000) 376.98 μs 8.54 μs 376.59 μs +0.1%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 100000) 338.82 μs 20.45 μs 369.36 μs -8.3%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 3.54 μs 1.7 ns 3.55 μs -0.2%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 1000) 1.95 μs 1.9 ns 1.95 μs -0.0%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.54 ms 8.09 μs 1.55 ms -1.1%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 100000) 246.40 μs 747.7 ns 246.84 μs -0.2%
IndexedPriorityQueueBenchmark.PriorityQueue_DecreaseKey(ItemCount: 1000) 63.68 μs 215.3 ns 62.50 μs +1.9%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_DecreaseKey(ItemCount: 1000) 138.54 μs 469.5 ns 138.62 μs -0.1%
IndexedPriorityQueueBenchmark.PriorityQueue_DecreaseKey(ItemCount: 100000) 26.96 ms 150.96 μs 28.98 ms -7.0%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_DecreaseKey(ItemCount: 100000) 42.60 ms 435.81 μs 43.19 ms -1.4%
IndexedPriorityQueueBenchmark.PriorityQueue_Enqueue(ItemCount: 1000) 3.88 μs 91.9 ns 3.95 μs -1.9%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_Enqueue(ItemCount: 1000) 22.26 μs 96.2 ns 22.20 μs +0.3%
IndexedPriorityQueueBenchmark.PriorityQueue_Enqueue(ItemCount: 100000) 920.83 μs 20.38 μs 910.54 μs +1.1%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_Enqueue(ItemCount: 100000) 4.91 ms 201.37 μs 5.09 ms -3.4%
LruCacheBenchmark.Dictionary_Get(ItemCount: 1000) 19.75 μs 624.4 ns 18.85 μs +4.8%
LruCacheBenchmark.LruCache_Get(ItemCount: 1000) 5.65 μs 17.4 ns 5.64 μs +0.2%
LruCacheBenchmark.Dictionary_Get(ItemCount: 100000) 19.03 μs 41.2 ns 19.53 μs -2.6%
LruCacheBenchmark.LruCache_Get(ItemCount: 100000) 5.82 μs 4.2 ns 5.86 μs -0.7%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 1000) 3.75 μs 151.1 ns 3.56 μs +5.5%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 1000) 2.86 μs 1.6 ns 2.86 μs -0.0%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 100000) 417.57 μs 2.02 μs 457.07 μs -8.6%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 100000) 1.18 ms 1.60 μs 1.17 ms +0.1%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 1000) 23.67 μs 389.2 ns 21.35 μs +10.9% ⚠️
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 1000) 32.55 μs 473.1 ns 30.87 μs +5.5%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 100000) 10.68 ms 126.18 μs 10.63 ms +0.5%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 100000) 15.67 ms 263.70 μs 15.53 ms +0.9%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 1000) 3.90 μs 59.7 ns 3.96 μs -1.4%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 1000) 1.90 μs 2.8 ns 1.90 μs -0.3%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.41 ms 21.12 μs 1.38 ms +1.6%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 100000) 555.98 μs 15.31 μs 550.70 μs +1.0%
BitSetBenchmark.BitArray_Or(ItemCount: 1024) 71.2 ns 2.5 ns 74.1 ns -3.9%
BitSetBenchmark.BitSet_Or(ItemCount: 1024) 953.0 ns 3.2 ns 953.3 ns -0.0%
BitSetBenchmark.BitArray_Or(ItemCount: 1000000) 35.54 μs 405.9 ns 35.78 μs -0.7%
BitSetBenchmark.BitSet_Or(ItemCount: 1000000) 3.90 ms 13.74 μs 3.91 ms -0.2%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1024) 997.9 ns 54.8 ns 984.0 ns +1.4%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1024) 5.4 ns 0.0 ns 5.4 ns +0.3%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1000000) 4.25 ms 2.91 μs 4.25 ms +0.0%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1000000) 4.30 μs 3.8 ns 4.30 μs -0.1%
LruCacheBenchmark.Dictionary_Put(ItemCount: 1000) 68.52 μs 1.79 μs 68.91 μs -0.6%
LruCacheBenchmark.LruCache_Put(ItemCount: 1000) 369.36 μs 13.56 μs 372.78 μs -0.9%
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 6.16 ms 67.97 μs 5.04 ms +22.1% ⚠️
LruCacheBenchmark.LruCache_Put(ItemCount: 100000) 4.98 ms 20.86 μs 4.95 ms +0.6%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 1000) 23.38 μs 3.06 μs 22.04 μs +6.1%
IntSetBenchmark.HashSet_Remove(ItemCount: 1000) 21.19 μs 2.09 μs 20.50 μs +3.3%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 1000) 115.30 μs 7.75 μs 113.85 μs +1.3%
IntSetBenchmark.IntSet_Remove(ItemCount: 1000) 64.36 μs 6.27 μs 64.69 μs -0.5%
SwissSetBenchmark.HashSet_Remove(ItemCount: 1000) 20.68 μs 1.24 μs 20.47 μs +1.0%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 1000) 52.19 μs 4.59 μs 52.69 μs -0.9%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 100000) 1.83 ms 228.21 μs 1.85 ms -1.2%
IntSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.29 ms 9.22 μs 1.29 ms -0.1%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 100000) 2.02 ms 257.38 μs 2.25 ms -10.3%
IntSetBenchmark.IntSet_Remove(ItemCount: 100000) 1.11 ms 7.71 μs 1.11 ms -0.1%
SwissSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.35 ms 38.59 μs 1.32 ms +1.9%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 100000) 657.07 μs 16.37 μs 655.97 μs +0.2%
BitSetBenchmark.BitArray_Xor(ItemCount: 1024) 72.0 ns 2.2 ns 73.3 ns -1.8%
BitSetBenchmark.BitSet_Xor(ItemCount: 1024) 953.2 ns 3.1 ns 952.9 ns +0.0%
BitSetBenchmark.BitArray_Xor(ItemCount: 1000000) 35.64 μs 341.6 ns 35.42 μs +0.6%
BitSetBenchmark.BitSet_Xor(ItemCount: 1000000) 3.91 ms 12.23 μs 3.91 ms -0.1%
SmallSetBenchmark.HashSet_Add(ItemCount: 8) 162.2 ns 1.7 ns 173.5 ns -6.5%
SmallSetBenchmark.SmallSet_Add(ItemCount: 8) 47.3 ns 1.2 ns 47.3 ns -0.0%
SmallSetBenchmark.HashSet_Add(ItemCount: 64) 787.4 ns 10.0 ns 795.1 ns -1.0%
SmallSetBenchmark.SmallSet_Add(ItemCount: 64) 1.67 μs 6.0 ns 1.67 μs -0.0%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 1000) 12.43 μs 282.7 ns 13.44 μs -7.5%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 1000) 17.08 μs 404.7 ns 18.45 μs -7.4%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 100000) 4.43 ms 454.96 μs 4.70 ms -5.7%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 100000) 6.20 ms 62.59 μs 6.38 ms -2.7%
DisjointSetBenchmark.Dictionary_Components(ItemCount: 1000) 19.32 μs 159.7 ns 19.28 μs +0.2%
DisjointSetBenchmark.DisjointSet_Components(ItemCount: 1000) 17.07 μs 111.6 ns 17.34 μs -1.6%
DisjointSetBenchmark.Dictionary_Components(ItemCount: 100000) 4.49 ms 135.12 μs 4.68 ms -4.1%
DisjointSetBenchmark.DisjointSet_Components(ItemCount: 100000) 3.24 ms 78.37 μs 3.25 ms -0.4%
DisjointSetBenchmark.Dictionary_Connected(ItemCount: 1000) 9.16 μs 11.0 ns 9.34 μs -2.0%
DisjointSetBenchmark.DisjointSet_Connected(ItemCount: 1000) 13.07 μs 58.7 ns 12.88 μs +1.5%
DisjointSetBenchmark.Dictionary_Connected(ItemCount: 100000) 257.18 μs 747.3 ns 267.98 μs -4.0%
DisjointSetBenchmark.DisjointSet_Connected(ItemCount: 100000) 414.50 μs 54.00 μs 346.69 μs +19.6% ⚠️
SmallSetBenchmark.HashSet_Contains(ItemCount: 8) 37.2 ns 0.1 ns 37.2 ns -0.0%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 8) 19.1 ns 0.1 ns 19.1 ns +0.3%
SmallSetBenchmark.HashSet_Contains(ItemCount: 64) 300.2 ns 1.5 ns 299.4 ns +0.3%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 64) 1.11 μs 11.5 ns 1.11 μs +0.3%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.71 μs 6.1 ns 4.72 μs -0.2%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 1000) 2.53 μs 114.9 ns 2.54 μs -0.4%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.53 ms 45.34 μs 1.59 ms -3.5%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 100000) 740.94 μs 1.69 μs 748.95 μs -1.1%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 4.2 ns 4.55 μs -0.3%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 1000) 2.72 μs 4.9 ns 2.72 μs +0.0%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.94 ms 9.09 μs 1.96 ms -0.8%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 100000) 1.18 ms 4.22 μs 1.19 ms -0.8%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 8) 165.7 ns 2.6 ns 181.1 ns -8.5%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 8) 86.0 ns 0.7 ns 94.6 ns -9.1% ✅
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 64) 764.9 ns 6.2 ns 839.9 ns -8.9%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 64) 1.08 μs 10.7 ns 1.10 μs -2.1%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.32 μs 210.8 ns 15.21 μs -12.5% ✅
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.94 μs 485.6 ns 14.40 μs -3.2%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 1000) 11.92 μs 119.0 ns 12.49 μs -4.6%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 1000) 8.42 μs 381.1 ns 8.36 μs +0.7%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.13 ms 72.56 μs 4.30 ms -3.8%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.98 ms 81.96 μs 5.06 ms -1.6%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 100000) 4.75 ms 47.96 μs 4.87 ms -2.5%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 100000) 2.96 ms 30.53 μs 3.02 ms -1.8%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 8) 37.0 ns 0.1 ns 37.0 ns -0.1%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 8) 22.6 ns 0.1 ns 25.5 ns -11.4%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 64) 297.3 ns 0.4 ns 297.0 ns +0.1%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 64) 1.11 μs 13.3 ns 1.10 μs +1.0%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 10.8 ns 4.72 μs +0.2%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.86 μs 131.6 ns 4.70 μs +3.5%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 1000) 2.16 μs 5.9 ns 2.47 μs -12.8%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 1000) 2.64 μs 366.2 ns 2.37 μs +11.5%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 8.56 μs 1.59 ms +0.4%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.61 ms 10.09 μs 1.62 ms -0.4%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 100000) 694.10 μs 2.31 μs 711.04 μs -2.4%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 100000) 709.26 μs 3.90 μs 723.62 μs -2.0%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 8) 1.34 μs 123.2 ns 1.44 μs -7.1%
SmallSetBenchmark.HashSet_Remove(ItemCount: 8) 512.1 ns 166.3 ns 345.3 ns +48.3%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 8) 1.29 μs 63.6 ns 1.21 μs +7.2%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 8) 1.51 μs 231.2 ns 1.54 μs -1.8%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 64) 5.74 μs 985.2 ns 5.34 μs +7.5%
SmallSetBenchmark.HashSet_Remove(ItemCount: 64) 1.61 μs 327.5 ns 1.51 μs +6.4%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 64) 27.59 μs 4.55 μs 22.31 μs +23.7%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 24.57 μs 4.44 μs 25.36 μs -3.1%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 89.09 μs 6.29 μs 85.34 μs +4.4%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 88.09 μs 11.02 μs 89.63 μs -1.7%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 1000) 148.66 μs 8.30 μs 153.19 μs -3.0%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 1000) 142.36 μs 9.76 μs 151.36 μs -5.9%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 1000) 29.43 μs 3.63 μs 31.89 μs -7.7%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 1000) 135.48 μs 5.80 μs 134.02 μs +1.1%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.09 ms 25.97 μs 2.08 ms +0.3%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.06 ms 14.42 μs 2.32 ms -11.3% ✅
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 100000) 1.63 ms 109.87 μs 1.81 ms -9.8%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 100000) 1.57 ms 14.24 μs 1.79 ms -12.5% ✅
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 18.55 μs 1.77 ms -3.1%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 100000) 1.36 ms 23.78 μs 1.60 ms -15.3% ✅
DisjointSetBenchmark.Dictionary_Union(ItemCount: 1000) 102.18 μs 1.67 μs 101.80 μs +0.4%
DisjointSetBenchmark.DisjointSet_Union(ItemCount: 1000) 27.66 μs 371.8 ns 27.30 μs +1.3%
DisjointSetBenchmark.Dictionary_Union(ItemCount: 100000) 53.46 ms 3.75 ms 48.02 ms +11.3%
DisjointSetBenchmark.DisjointSet_Union(ItemCount: 100000) 8.44 ms 142.77 μs 8.17 ms +3.4%
EnumSetBenchmark.HashSet_Add 618.5 ns 7.0 ns 595.7 ns +3.8%
EnumSetBenchmark.EnumSet_Add 85.4 ns 2.3 ns 85.5 ns -0.1%
BloomFilterBenchmark.HashSet_Add(ItemCount: 1000) 13.05 μs 518.1 ns 13.73 μs -5.0%
CeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 12.77 μs 253.1 ns 13.72 μs -6.9%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 1000) 13.56 μs 163.7 ns 13.19 μs +2.8%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 1000) 16.39 μs 15.3 ns 16.39 μs -0.0%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 1000) 9.41 μs 178.0 ns 9.68 μs -2.8%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 1000) 11.70 μs 85.2 ns 11.42 μs +2.4%
BloomFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.74 ms 110.55 μs 4.90 ms -3.2%
CeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 5.25 ms 101.73 μs 5.23 ms +0.3%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 100000) 5.10 ms 65.97 μs 5.10 ms +0.1%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 100000) 1.25 ms 20.30 μs 1.27 ms -1.5%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 100000) 3.56 ms 61.63 μs 3.55 ms +0.4%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 100000) 5.72 ms 68.90 μs 5.63 ms +1.6%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 1000) 169.44 μs 1.61 μs 167.18 μs +1.4%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 1000) 3.96 ms 212.08 μs 3.48 ms +13.7% ⚠️
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 100000) 31.06 ms 576.94 μs 29.83 ms +4.1%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 100000) 2.05 s 219.54 ms 2.04 s +0.4%
EnumSetBenchmark.HashSet_Contains 170.6 ns 0.3 ns 170.9 ns -0.2%
EnumSetBenchmark.EnumSet_Contains 52.2 ns 0.6 ns 51.6 ns +1.2%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 7.9 ns 4.74 μs +0.1%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.71 μs 4.7 ns 4.71 μs +0.1%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 13.6 ns 4.74 μs +0.2%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 1000) 14.19 μs 26.6 ns 14.18 μs +0.1%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 1000) 1.93 μs 21.4 ns 1.92 μs +0.2%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 1000) 2.64 μs 17.3 ns 2.64 μs +0.1%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.60 ms 88.29 μs 1.54 ms +3.6%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.51 ms 2.43 μs 1.52 ms -0.1%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.51 ms 4.19 μs 1.58 ms -4.8%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 100000) 982.16 μs 860.4 ns 981.84 μs +0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 100000) 546.57 μs 3.54 μs 549.81 μs -0.6%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 100000) 745.34 μs 4.02 μs 745.98 μs -0.1%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.57 μs 6.6 ns 4.57 μs -0.0%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.57 μs 5.7 ns 4.57 μs -0.0%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 1000) 3.98 μs 4.4 ns 3.98 μs +0.0%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 1000) 2.79 μs 3.8 ns 2.79 μs +0.0%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 2.02 ms 9.31 μs 2.00 ms +0.6%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 2.01 ms 11.98 μs 1.99 ms +1.1%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 100000) 1.67 ms 1.50 μs 1.67 ms +0.0%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 100000) 1.26 ms 2.15 μs 1.26 ms -0.0%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.51 μs 527.5 ns 13.72 μs +5.7%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.78 μs 455.0 ns 13.77 μs +7.3%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 1000) 9.68 μs 335.2 ns 9.07 μs +6.7%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 1000) 17.57 μs 284.5 ns 17.19 μs +2.2%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.41 ms 69.32 μs 4.41 ms -0.1%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.07 ms 47.65 μs 5.07 ms -0.2%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 100000) 5.21 ms 82.76 μs 5.21 ms +0.1%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 100000) 9.15 ms 379.97 μs 8.86 ms +3.3%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 1000) 7.62 μs 9.9 ns 7.62 μs +0.1%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.61 μs 2.8 ns 4.89 μs -5.6%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.60 μs 3.9 ns 4.72 μs -2.5%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 1000) 83.02 μs 293.7 ns 81.80 μs +1.5%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 1000) 2.08 μs 6.4 ns 2.08 μs +0.0%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 1000) 2.89 μs 2.6 ns 2.89 μs -0.1%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 100000) 1.96 ms 116.55 μs 1.90 ms +3.3%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.64 ms 22.15 μs 1.57 ms +4.6%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.56 ms 47.65 μs 1.61 ms -2.6%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 100000) 10.12 ms 770.32 μs 8.46 ms +19.7% ⚠️
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 100000) 638.09 μs 68.81 μs 619.36 μs +3.0%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 100000) 908.39 μs 20.04 μs 892.55 μs +1.8%
EnumSetBenchmark.HashSet_Remove 2.40 μs 144.8 ns 2.39 μs +0.2%
EnumSetBenchmark.EnumSet_Remove 1.11 μs 333.5 ns 1.11 μs -0.1%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 30.36 μs 3.46 μs 30.45 μs -0.3%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 80.64 μs 7.67 μs 77.04 μs +4.7%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 81.34 μs 6.20 μs 81.90 μs -0.7%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 1000) 140.51 μs 8.61 μs 142.74 μs -1.6%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 1000) 88.25 μs 6.59 μs 96.99 μs -9.0%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 1000) 137.92 μs 5.50 μs 135.43 μs +1.8%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 1000) 30.52 μs 3.43 μs 32.80 μs -7.0%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 1000) 111.21 μs 6.75 μs 111.54 μs -0.3%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.68 ms 13.94 μs 1.70 ms -1.7%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.98 ms 19.82 μs 2.02 ms -1.8%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.04 ms 41.18 μs 2.05 ms -0.8%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 100000) 1.42 ms 69.33 μs 1.49 ms -5.2%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 6.37 ms 29.18 μs 2.55 ms +150.1% ⚠️
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 100000) 2.18 ms 410.99 μs 2.16 ms +0.6%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.73 ms 35.25 μs 1.75 ms -1.4%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 100000) 1.69 ms 111.86 μs 1.72 ms -2.1%
EnumSetBenchmark.HashSet_Union 447.1 ns 4.7 ns 426.1 ns +4.9%
EnumSetBenchmark.EnumSet_Union 23.8 ns 0.4 ns 23.3 ns +2.3%
EnumMapBenchmark.Dictionary_Add 618.8 ns 17.1 ns 613.3 ns +0.9%
EnumMapBenchmark.EnumMap_Add 152.4 ns 0.6 ns 154.1 ns -1.1%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.37 μs 154.5 ns 12.43 μs -0.5%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 1000) 12.37 μs 74.5 ns 12.20 μs +1.5%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 12.64 μs 212.4 ns 12.75 μs -0.9%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 1000) 7.29 μs 56.7 ns 7.20 μs +1.2%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 1000) 27.35 μs 40.3 ns 27.38 μs -0.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 1000) 8.93 μs 127.9 ns 8.98 μs -0.5%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.67 ms 87.72 μs 4.67 ms +0.0%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 100000) 4.83 ms 59.56 μs 4.88 ms -0.9%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 4.80 ms 150.02 μs 4.83 ms -0.6%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 100000) 2.06 ms 4.93 μs 2.08 ms -0.9%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 100000) 575.21 μs 471.5 ns 575.38 μs -0.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 100000) 2.89 ms 8.15 μs 2.83 ms +2.1%
XorFilterBenchmark.HashSet_Build(ItemCount: 1000) 8.04 μs 47.6 ns 8.03 μs +0.0%
XorFilterBenchmark.XorFilter_Build(ItemCount: 1000) 39.89 μs 194.5 ns 40.73 μs -2.1%
XorFilterBenchmark.HashSet_Build(ItemCount: 100000) 2.08 ms 22.17 μs 2.11 ms -1.2%
XorFilterBenchmark.XorFilter_Build(ItemCount: 100000) 12.70 ms 346.33 μs 12.74 ms -0.3%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 38.4 ns 4.73 μs +0.2%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 10.2 ns 4.75 μs -0.2%
XorFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 38.6 ns 4.78 μs -0.9%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 1000) 4.92 μs 8.5 ns 4.91 μs +0.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 1000) 1.92 μs 24.2 ns 1.93 μs -0.0%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 1000) 6.78 μs 11.4 ns 6.77 μs +0.0%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.63 ms 37.08 μs 1.58 ms +3.5%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.54 ms 4.02 μs 1.56 ms -0.9%
XorFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.58 ms 18.48 μs 1.59 ms -0.5%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 100000) 1.75 ms 1.36 μs 1.77 ms -1.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 100000) 573.72 μs 2.13 μs 570.69 μs +0.5%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 100000) 704.00 μs 577.8 ns 705.22 μs -0.2%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.64 μs 106.8 ns 4.54 μs +2.2%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.56 μs 24.5 ns 4.54 μs +0.4%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 1000) 8.37 μs 7.8 ns 8.37 μs -0.0%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 1000) 6.77 μs 4.0 ns 6.78 μs -0.1%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.94 ms 6.48 μs 1.95 ms -0.3%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.91 ms 18.71 μs 1.88 ms +1.7%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 100000) 930.41 μs 2.00 μs 926.31 μs +0.4%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 100000) 705.17 μs 265.0 ns 705.27 μs -0.0%
EnumMapBenchmark.Dictionary_Enumerate 50.4 ns 0.2 ns 50.5 ns -0.4%
EnumMapBenchmark.EnumMap_Enumerate 41.6 ns 1.9 ns 39.8 ns +4.5%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 1000) 0.0 ns 0.0 ns 0.0 ns -10.2%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 1000) 23.44 μs 10.4 ns 23.45 μs -0.0%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 100000) 0.0 ns 0.0 ns 0.0 ns +119.7%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 100000) 22.98 μs 4.5 ns 22.97 μs +0.0%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.34 μs 150.3 ns 15.24 μs +0.6%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.29 μs 143.1 ns 13.80 μs -3.7%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 1000) 11.64 μs 74.4 ns 11.79 μs -1.2%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 1000) 30.06 μs 230.0 ns 29.56 μs +1.7%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.99 ms 52.54 μs 5.02 ms -0.6%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.52 ms 198.24 μs 4.47 ms +1.0%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 100000) 6.85 ms 143.49 μs 6.88 ms -0.5%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 100000) 3.93 ms 21.54 μs 3.94 ms -0.4%
EnumMapBenchmark.Dictionary_Lookup 117.8 ns 0.2 ns 117.9 ns -0.1%
EnumMapBenchmark.EnumMap_Lookup 63.0 ns 0.1 ns 63.2 ns -0.3%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.87 μs 19.0 ns 4.88 μs -0.2%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 14.0 ns 4.71 μs +0.4%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 1000) 2.27 μs 6.7 ns 2.23 μs +1.9%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 1000) 6.49 μs 3.44 μs 2.99 μs +117.3% ⚠️
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.59 ms 12.64 μs 1.59 ms +0.2%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 4.86 μs 1.55 ms +3.4%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 100000) 698.72 μs 1.29 μs 699.26 μs -0.1%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 100000) 815.36 μs 7.82 μs 813.30 μs +0.3%
EnumMapBenchmark.Dictionary_Remove 2.99 μs 212.2 ns 3.25 μs -8.0%
EnumMapBenchmark.EnumMap_Remove 1.47 μs 55.5 ns 1.49 μs -1.1%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 85.44 μs 8.33 μs 84.76 μs +0.8%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 27.55 μs 3.09 μs 31.20 μs -11.7%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 87.78 μs 4.67 μs 83.50 μs +5.1%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 1000) 100.77 μs 3.93 μs 88.42 μs +14.0% ⚠️
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 1000) 140.23 μs 7.92 μs 134.17 μs +4.5%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 72.07 μs 2.62 μs 81.40 μs -11.5% ✅
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 1000) 13.17 μs 49.2 ns 13.15 μs +0.2%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 1000) 12.90 μs 18.5 ns 12.89 μs +0.1%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.04 ms 24.37 μs 2.00 ms +1.7%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.74 ms 20.40 μs 1.71 ms +1.4%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.07 ms 20.27 μs 2.06 ms +0.3%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 100000) 1.74 ms 205.72 μs 1.69 ms +3.3%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 100000) 1.25 ms 24.96 μs 1.25 ms -0.5%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 100000) 1.67 ms 54.11 μs 1.68 ms -0.5%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 100000) 3.80 ms 47.89 μs 3.91 ms -2.8%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 100000) 3.97 ms 6.14 μs 3.98 ms -0.2%
Hashers (100)
Benchmark This PR StdDev main Δ
StringHasherBenchmark.Bcl_GetHashCode(Shape: ShortAscii) 15.42 μs 32.7 ns 15.39 μs +0.2%
StringHasherBenchmark.EqualityComparer_Default(Shape: ShortAscii) 15.38 μs 22.4 ns 15.37 μs +0.1%
StringHasherBenchmark.Djb2(Shape: ShortAscii) 22.03 μs 22.8 ns 22.05 μs -0.1%
StringHasherBenchmark.Djb2A(Shape: ShortAscii) 22.05 μs 27.6 ns 22.04 μs +0.0%
StringHasherBenchmark.Sdbm(Shape: ShortAscii) 32.86 μs 31.9 ns 32.84 μs +0.1%
StringHasherBenchmark.Elf(Shape: ShortAscii) 44.09 μs 273.2 ns 43.92 μs +0.4%
StringHasherBenchmark.Crc32(Shape: ShortAscii) 50.12 μs 363.6 ns 49.89 μs +0.5%
StringHasherBenchmark.Adler32(Shape: ShortAscii) 96.21 μs 48.5 ns 96.27 μs -0.1%
StringHasherBenchmark.FnV1(Shape: ShortAscii) 25.35 μs 16.3 ns 25.35 μs +0.0%
StringHasherBenchmark.FnV1_64(Shape: ShortAscii) 25.48 μs 33.3 ns 25.47 μs +0.1%
StringHasherBenchmark.FnV1A(Shape: ShortAscii) 10.65 μs 15.5 ns 10.65 μs +0.0%
StringHasherBenchmark.FnV1A_Full(Shape: ShortAscii) 22.84 μs 15.4 ns 22.85 μs -0.1%
StringHasherBenchmark.FnV1A_64(Shape: ShortAscii) 25.73 μs 43.7 ns 25.70 μs +0.1%
StringHasherBenchmark.JenkinsOaat(Shape: ShortAscii) 39.28 μs 27.5 ns 39.30 μs -0.0%
StringHasherBenchmark.Murmur2(Shape: ShortAscii) 15.20 μs 28.8 ns 15.22 μs -0.2%
StringHasherBenchmark.Murmur3(Shape: ShortAscii) 17.32 μs 18.3 ns 17.32 μs -0.0%
StringHasherBenchmark.XxHash32(Shape: ShortAscii) 16.92 μs 14.7 ns 16.91 μs +0.1%
StringHasherBenchmark.XxHash64(Shape: ShortAscii) 18.11 μs 11.9 ns 18.11 μs +0.0%
StringHasherBenchmark.XxHash3(Shape: ShortAscii) 14.84 μs 23.3 ns 14.89 μs -0.3%
StringHasherBenchmark.CityHash64(Shape: ShortAscii) 15.25 μs 8.7 ns 15.23 μs +0.1%
StringHasherBenchmark.MetroHash64(Shape: ShortAscii) 15.00 μs 6.5 ns 15.01 μs -0.0%
StringHasherBenchmark.SipHash13(Shape: ShortAscii) 27.39 μs 16.9 ns 27.40 μs -0.0%
StringHasherBenchmark.SipHash24(Shape: ShortAscii) 38.51 μs 49.9 ns 38.48 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: ShortAscii) 50.02 μs 60.2 ns 50.00 μs +0.0%
StringHasherBenchmark.HighwayHash64(Shape: ShortAscii) 480.24 μs 292.1 ns 480.31 μs -0.0%
StringHasherBenchmark.Bcl_GetHashCode(Shape: LongAscii) 96.98 μs 68.6 ns 96.96 μs +0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: LongAscii) 96.68 μs 132.4 ns 96.58 μs +0.1%
StringHasherBenchmark.Djb2(Shape: LongAscii) 229.35 μs 86.3 ns 229.41 μs -0.0%
StringHasherBenchmark.Djb2A(Shape: LongAscii) 229.39 μs 74.0 ns 229.30 μs +0.0%
StringHasherBenchmark.Sdbm(Shape: LongAscii) 308.14 μs 245.8 ns 308.01 μs +0.0%
StringHasherBenchmark.Elf(Shape: LongAscii) 582.30 μs 4.95 μs 577.33 μs +0.9%
StringHasherBenchmark.Crc32(Shape: LongAscii) 589.93 μs 299.7 ns 589.42 μs +0.1%
StringHasherBenchmark.Adler32(Shape: LongAscii) 788.96 μs 229.8 ns 788.05 μs +0.1%
StringHasherBenchmark.FnV1(Shape: LongAscii) 289.65 μs 83.3 ns 289.56 μs +0.0%
StringHasherBenchmark.FnV1_64(Shape: LongAscii) 284.59 μs 217.8 ns 284.52 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: LongAscii) 122.28 μs 49.9 ns 122.32 μs -0.0%
StringHasherBenchmark.FnV1A_Full(Shape: LongAscii) 281.73 μs 87.0 ns 281.69 μs +0.0%
StringHasherBenchmark.FnV1A_64(Shape: LongAscii) 286.83 μs 67.4 ns 286.91 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: LongAscii) 378.63 μs 124.9 ns 378.58 μs +0.0%
StringHasherBenchmark.Murmur2(Shape: LongAscii) 101.94 μs 81.8 ns 101.89 μs +0.0%
StringHasherBenchmark.Murmur3(Shape: LongAscii) 113.01 μs 75.3 ns 110.89 μs +1.9%
StringHasherBenchmark.XxHash32(Shape: LongAscii) 73.24 μs 45.4 ns 73.26 μs -0.0%
StringHasherBenchmark.XxHash64(Shape: LongAscii) 90.60 μs 1.08 μs 91.12 μs -0.6%
StringHasherBenchmark.XxHash3(Shape: LongAscii) 70.41 μs 208.7 ns 70.12 μs +0.4%
StringHasherBenchmark.CityHash64(Shape: LongAscii) 122.88 μs 1.43 μs 122.65 μs +0.2%
StringHasherBenchmark.MetroHash64(Shape: LongAscii) 78.52 μs 2.74 μs 77.57 μs +1.2%
StringHasherBenchmark.SipHash13(Shape: LongAscii) 114.64 μs 63.5 ns 114.64 μs -0.0%
StringHasherBenchmark.SipHash24(Shape: LongAscii) 161.32 μs 656.7 ns 161.14 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: LongAscii) 247.48 μs 226.4 ns 247.69 μs -0.1%
StringHasherBenchmark.HighwayHash64(Shape: LongAscii) 827.88 μs 1.83 μs 828.94 μs -0.1%
StringHasherBenchmark.Bcl_GetHashCode(Shape: NonAscii) 22.88 μs 12.0 ns 22.88 μs -0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: NonAscii) 22.84 μs 23.5 ns 22.84 μs +0.0%
StringHasherBenchmark.Djb2(Shape: NonAscii) 43.45 μs 48.1 ns 43.42 μs +0.1%
StringHasherBenchmark.Djb2A(Shape: NonAscii) 43.43 μs 37.8 ns 43.44 μs -0.0%
StringHasherBenchmark.Sdbm(Shape: NonAscii) 61.58 μs 40.3 ns 61.59 μs -0.0%
StringHasherBenchmark.Elf(Shape: NonAscii) 99.67 μs 139.9 ns 99.65 μs +0.0%
StringHasherBenchmark.Crc32(Shape: NonAscii) 102.71 μs 123.7 ns 102.65 μs +0.1%
StringHasherBenchmark.Adler32(Shape: NonAscii) 175.42 μs 68.8 ns 175.35 μs +0.0%
StringHasherBenchmark.FnV1(Shape: NonAscii) 47.64 μs 30.2 ns 47.66 μs -0.0%
StringHasherBenchmark.FnV1_64(Shape: NonAscii) 50.03 μs 59.2 ns 50.05 μs -0.0%
StringHasherBenchmark.FnV1A(Shape: NonAscii) 21.67 μs 29.3 ns 21.66 μs +0.0%
StringHasherBenchmark.FnV1A_Full(Shape: NonAscii) 45.08 μs 42.9 ns 45.10 μs -0.1%
StringHasherBenchmark.FnV1A_64(Shape: NonAscii) 49.61 μs 38.1 ns 49.63 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: NonAscii) 73.12 μs 46.6 ns 73.17 μs -0.1%
StringHasherBenchmark.Murmur2(Shape: NonAscii) 27.30 μs 121.3 ns 27.30 μs +0.0%
StringHasherBenchmark.Murmur3(Shape: NonAscii) 32.08 μs 322.2 ns 31.86 μs +0.7%
StringHasherBenchmark.XxHash32(Shape: NonAscii) 23.91 μs 7.9 ns 23.94 μs -0.1%
StringHasherBenchmark.XxHash64(Shape: NonAscii) 29.15 μs 30.8 ns 29.11 μs +0.1%
StringHasherBenchmark.XxHash3(Shape: NonAscii) 22.90 μs 11.7 ns 22.96 μs -0.3%
StringHasherBenchmark.CityHash64(Shape: NonAscii) 22.04 μs 16.0 ns 22.03 μs +0.0%
StringHasherBenchmark.MetroHash64(Shape: NonAscii) 25.65 μs 16.5 ns 25.64 μs +0.1%
StringHasherBenchmark.SipHash13(Shape: NonAscii) 37.00 μs 94.0 ns 36.95 μs +0.1%
StringHasherBenchmark.SipHash24(Shape: NonAscii) 51.49 μs 540.1 ns 51.88 μs -0.8%
StringHasherBenchmark.HalfSipHash24(Shape: NonAscii) 73.25 μs 461.3 ns 73.16 μs +0.1%
StringHasherBenchmark.HighwayHash64(Shape: NonAscii) 511.62 μs 3.55 μs 513.26 μs -0.3%
IntegerHasherBenchmark.Guid_Bcl 921.3 ns 16.8 ns 963.7 ns -4.4%
IntegerHasherBenchmark.Guid_EqualityComparer 1.12 μs 16.8 ns 1.18 μs -4.7%
IntegerHasherBenchmark.Guid_Celerity 3.87 μs 97.4 ns 3.94 μs -1.9%
IntegerHasherBenchmark.Int32_Bcl 479.4 ns 1.2 ns 483.4 ns -0.8%
IntegerHasherBenchmark.Int32_EqualityComparer 483.4 ns 3.8 ns 480.5 ns +0.6%
IntegerHasherBenchmark.Int32_Identity 465.2 ns 10.0 ns 480.5 ns -3.2%
IntegerHasherBenchmark.Int32_WangNaive 920.2 ns 12.0 ns 955.9 ns -3.7%
IntegerHasherBenchmark.Int32_Wang 1.97 μs 37.5 ns 2.04 μs -3.4%
IntegerHasherBenchmark.Int32_Murmur3 1.37 μs 21.4 ns 1.38 μs -0.8%
IntegerHasherBenchmark.Int64_Bcl 909.8 ns 6.8 ns 909.3 ns +0.1%
IntegerHasherBenchmark.Int64_EqualityComparer 921.5 ns 20.9 ns 910.1 ns +1.2%
IntegerHasherBenchmark.Int64_Identity 475.9 ns 7.6 ns 462.3 ns +2.9%
IntegerHasherBenchmark.Int64_WangNaive 1.37 μs 19.2 ns 1.35 μs +1.1%
IntegerHasherBenchmark.Int64_Wang 2.83 μs 59.3 ns 2.82 μs +0.1%
IntegerHasherBenchmark.Int64_Murmur3 1.52 μs 36.2 ns 1.54 μs -1.3%
IntegerHasherBenchmark.UInt32_Bcl 466.2 ns 10.8 ns 457.4 ns +1.9%
IntegerHasherBenchmark.UInt32_EqualityComparer 469.9 ns 9.9 ns 461.7 ns +1.8%
IntegerHasherBenchmark.UInt32_Default 940.2 ns 24.5 ns 919.3 ns +2.3%
IntegerHasherBenchmark.UInt32_Wang 1.98 μs 43.7 ns 1.94 μs +2.0%
IntegerHasherBenchmark.UInt32_Murmur3 1.39 μs 56.4 ns 1.35 μs +3.2%
IntegerHasherBenchmark.UInt64_Bcl 912.0 ns 10.6 ns 911.5 ns +0.1%
IntegerHasherBenchmark.UInt64_EqualityComparer 925.1 ns 22.8 ns 905.4 ns +2.2%
IntegerHasherBenchmark.UInt64_Default 1.53 μs 34.1 ns 1.54 μs -0.3%
IntegerHasherBenchmark.UInt64_Wang 2.77 μs 27.6 ns 2.76 μs +0.6%
IntegerHasherBenchmark.UInt64_WangNaive 1.36 μs 19.6 ns 1.35 μs +0.6%

Same-runner A/B (sharded 6-way): main (9fd8d26) 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 0f9bfe0 into main Jul 23, 2026
15 checks passed
@marius-bughiu
marius-bughiu deleted the chore/code-review/frozenset-ctor-exception-doc branch July 24, 2026 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated:code-review PR or issue opened by celerity---code-review sweep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants