Skip to content

docs(StringFnV1AHasher): replace tutorial-style loop comment - #295

Merged
marius-bughiu merged 2 commits into
mainfrom
chore/code-review/fnv1a-hasher-comment
Jul 23, 2026
Merged

docs(StringFnV1AHasher): replace tutorial-style loop comment#295
marius-bughiu merged 2 commits into
mainfrom
chore/code-review/fnv1a-hasher-comment

Conversation

@marius-bughiu

Copy link
Copy Markdown
Owner

What

Replaced a leftover tutorial-style comment in the StringFnV1AHasher.Hash inner loop with a declarative one describing what the code actually does.

Why

The old comment — "Convert char to its lower byte; you may also want to consider encoding specifics if you deal with non-ASCII characters" — is written in second person and reads like scaffolding left over from a tutorial. It is also out of step with the precise, declarative comments its sibling hashers carry for the same low-byte operation (e.g. StringDjb2Hasher, StringFnV1AFullHasher), which state exactly what is folded and what collides. The replacement states the low-byte-only behavior and its collision implication and points at StringFnV1AFullHasher for the full-width alternative.

Comment-only change; no code or behavioral impact.

Test plan

  • dotnet build — succeeds, 0 errors
  • Comment-only change; runtime behavior and existing tests unaffected

The inner-loop comment ("Convert char to its lower byte; you may also
want to consider encoding specifics if you deal with non-ASCII
characters") read as leftover second-person scaffolding. Replace it with
a declarative note describing the actual low-byte-only behavior and the
collision it implies, matching the comment style of sibling hashers such
as StringDjb2Hasher and StringFnV1AFullHasher.

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:17
@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 an inline comment in StringFnV1AHasher.Hash to be more declarative and consistent with the documentation style used across the hashing implementations in Celerity.Hashing.

Changes:

  • Replaced the tutorial-style inner-loop comment with a declarative explanation of the “low-byte-only” folding behavior.
  • Added an inline pointer to StringFnV1AFullHasher as the full-width alternative.

Comment thread src/Celerity.Hashing/StringFnV1AHasher.cs
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown

Coverage

Metric Value
Line 98.58% (6792/6890)
Branch 97.08% (2860/2946)
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% 90.38%

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown

Benchmarks

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

Highlights

Benchmark This PR StdDev main Δ
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 1000) 41.85 μs 1.12 μs 37.98 μs +10.2% ⚠️
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 8.28 ms 122.89 μs 6.45 ms +28.5% ⚠️
SwissSetBenchmark.SwissSet_Remove(ItemCount: 1000) 67.68 μs 3.40 μs 84.52 μs -19.9% ✅
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 8) 1.30 μs 71.8 ns 1.61 μs -19.6% ✅
SmallSetBenchmark.SmallSet_Remove(ItemCount: 8) 1.57 μs 211.2 ns 1.14 μs +37.8% ⚠️
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 30.95 μs 1.53 μs 24.47 μs +26.5% ⚠️
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 1000) 2.61 μs 3.8 ns 2.92 μs -10.5% ✅
XorFilterBenchmark.XorFilter_Build(ItemCount: 1000) 44.33 μs 968.0 ns 40.06 μs +10.7% ⚠️
Collections (396)
Benchmark This PR StdDev main Δ
HyperLogLogBenchmark.HashSet_Add(ItemCount: 1000) 12.08 μs 294.1 ns 12.06 μs +0.2%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 1000) 27.14 μs 366.1 ns 27.44 μs -1.1%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 100000) 4.79 ms 78.22 μs 4.84 ms -1.1%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 100000) 578.94 μs 8.53 μs 575.28 μs +0.6%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 1000) 0.0 ns 0.0 ns 0.0 ns +52.2%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 1000) 23.45 μs 9.6 ns 23.45 μs -0.0%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 100000) 0.0 ns 0.0 ns 0.0 ns +0.9%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 100000) 22.97 μs 6.0 ns 22.98 μs -0.0%
EnumSetBenchmark.HashSet_Add 588.2 ns 10.4 ns 595.0 ns -1.1%
EnumSetBenchmark.EnumSet_Add 83.4 ns 1.2 ns 83.2 ns +0.3%
LongSetBenchmark.HashSet_Add(ItemCount: 1000) 13.48 μs 122.8 ns 13.35 μs +1.0%
LongSetBenchmark.LongSet_Add(ItemCount: 1000) 9.75 μs 124.4 ns 9.58 μs +1.8%
LongSetBenchmark.HashSet_Add(ItemCount: 100000) 5.11 ms 96.73 μs 5.09 ms +0.3%
LongSetBenchmark.LongSet_Add(ItemCount: 100000) 6.67 ms 65.13 μs 6.69 ms -0.4%
EnumSetBenchmark.HashSet_Contains 170.6 ns 0.3 ns 184.3 ns -7.4%
EnumSetBenchmark.EnumSet_Contains 51.4 ns 0.2 ns 51.6 ns -0.3%
LongSetBenchmark.HashSet_Contains(ItemCount: 1000) 5.06 μs 5.8 ns 5.08 μs -0.3%
LongSetBenchmark.LongSet_Contains(ItemCount: 1000) 2.09 μs 3.9 ns 2.09 μs -0.0%
LongSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.59 ms 3.27 μs 1.59 ms -0.2%
LongSetBenchmark.LongSet_Contains(ItemCount: 100000) 593.53 μs 12.55 μs 584.58 μs +1.5%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 1000) 9.78 μs 19.2 ns 9.83 μs -0.5%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 1000) 5.32 μs 15.7 ns 5.31 μs +0.1%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 100000) 1.33 ms 16.85 μs 1.33 ms -0.0%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 100000) 630.97 μs 40.57 μs 631.78 μs -0.1%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 1000) 1.66 μs 0.5 ns 1.66 μs +0.1%
DequeBenchmark.Deque_Enumerate(ItemCount: 1000) 1.06 μs 1.0 ns 1.06 μs +0.0%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 100000) 153.49 μs 236.7 ns 153.43 μs +0.0%
DequeBenchmark.Deque_Enumerate(ItemCount: 100000) 105.71 μs 79.8 ns 105.71 μs -0.0%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.58 μs 157.0 ns 13.33 μs +1.8%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 1000) 10.18 μs 104.5 ns 10.25 μs -0.7%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.06 ms 93.48 μs 5.01 ms +1.0%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 100000) 7.05 ms 192.91 μs 7.05 ms -0.1%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.69 μs 5.5 ns 4.67 μs +0.3%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.84 μs 2.8 ns 4.84 μs -0.0%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 1000) 1.90 μs 3.1 ns 1.90 μs -0.0%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 1000) 2.83 μs 3.6 ns 2.92 μs -3.2%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 100000) 561.62 μs 1.28 μs 561.65 μs -0.0%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.66 ms 46.82 μs 1.67 ms -0.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 100000) 211.57 μs 174.8 ns 211.42 μs +0.1%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 100000) 855.35 μs 11.65 μs 861.91 μs -0.8%
DequeBenchmark.LinkedList_PushFront(ItemCount: 1000) 36.68 μs 1.39 μs 40.80 μs -10.1%
DequeBenchmark.Deque_PushFront(ItemCount: 1000) 19.66 μs 1.84 μs 19.06 μs +3.2%
DequeBenchmark.LinkedList_PushFront(ItemCount: 100000) 1.79 ms 19.92 μs 1.80 ms -0.3%
DequeBenchmark.Deque_PushFront(ItemCount: 100000) 693.39 μs 37.79 μs 817.34 μs -15.2%
DequeBenchmark.LinkedList_Queue(ItemCount: 1000) 49.18 μs 1.90 μs 49.44 μs -0.5%
DequeBenchmark.Deque_Queue(ItemCount: 1000) 28.11 μs 1.46 μs 33.07 μs -15.0%
DequeBenchmark.LinkedList_Queue(ItemCount: 100000) 4.77 ms 36.34 μs 4.80 ms -0.7%
DequeBenchmark.Deque_Queue(ItemCount: 100000) 519.84 μs 87.50 μs 458.23 μs +13.4%
EnumSetBenchmark.HashSet_Remove 2.61 μs 448.1 ns 2.59 μs +0.6%
EnumSetBenchmark.EnumSet_Remove 1.08 μs 167.3 ns 931.2 ns +16.0%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 1000) 50.82 μs 6.88 μs 47.41 μs +7.2%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 80.12 μs 8.83 μs 80.01 μs +0.1%
LongSetBenchmark.HashSet_Remove(ItemCount: 1000) 73.44 μs 7.96 μs 72.18 μs +1.7%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 1000) 100.69 μs 7.79 μs 99.67 μs +1.0%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 1000) 113.04 μs 7.23 μs 112.82 μs +0.2%
LongSetBenchmark.LongSet_Remove(ItemCount: 1000) 78.58 μs 9.28 μs 74.75 μs +5.1%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 100000) 562.59 μs 11.81 μs 568.70 μs -1.1%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.03 ms 16.65 μs 2.04 ms -0.5%
LongSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.94 ms 13.53 μs 1.96 ms -0.9%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 100000) 1.61 ms 13.48 μs 1.60 ms +0.4%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 100000) 1.91 ms 25.36 μs 1.97 ms -3.0%
LongSetBenchmark.LongSet_Remove(ItemCount: 100000) 1.59 ms 21.53 μs 1.60 ms -0.3%
EnumSetBenchmark.HashSet_Union 415.1 ns 6.5 ns 418.1 ns -0.7%
EnumSetBenchmark.EnumSet_Union 23.1 ns 0.6 ns 23.4 ns -1.3%
EnumMapBenchmark.Dictionary_Add 672.7 ns 27.9 ns 615.6 ns +9.3%
EnumMapBenchmark.EnumMap_Add 160.2 ns 1.6 ns 157.7 ns +1.6%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 1000) 11.67 μs 538.3 ns 10.67 μs +9.3%
IntSetBenchmark.HashSet_Add(ItemCount: 1000) 13.22 μs 210.0 ns 13.46 μs -1.8%
SwissSetBenchmark.HashSet_Add(ItemCount: 1000) 13.05 μs 276.3 ns 13.76 μs -5.2%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 1000) 11.06 μs 233.8 ns 10.77 μs +2.7%
IntSetBenchmark.IntSet_Add(ItemCount: 1000) 9.13 μs 124.1 ns 8.80 μs +3.8%
SwissSetBenchmark.SwissSet_Add(ItemCount: 1000) 27.82 μs 102.3 ns 27.62 μs +0.7%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 100000) 1.50 ms 25.41 μs 1.52 ms -1.4%
IntSetBenchmark.HashSet_Add(ItemCount: 100000) 5.35 ms 94.83 μs 5.27 ms +1.5%
SwissSetBenchmark.HashSet_Add(ItemCount: 100000) 4.88 ms 58.90 μs 4.82 ms +1.2%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 100000) 946.98 μs 2.51 μs 936.28 μs +1.1%
IntSetBenchmark.IntSet_Add(ItemCount: 100000) 3.22 ms 15.26 μs 3.24 ms -0.7%
SwissSetBenchmark.SwissSet_Add(ItemCount: 100000) 4.62 ms 34.19 μs 4.60 ms +0.6%
BitSetBenchmark.BitArray_And(ItemCount: 1024) 57.3 ns 1.0 ns 55.9 ns +2.5%
BitSetBenchmark.BitSet_And(ItemCount: 1024) 1.25 μs 5.9 ns 1.21 μs +3.9%
BitSetBenchmark.BitArray_And(ItemCount: 1000000) 44.30 μs 537.2 ns 44.25 μs +0.1%
BitSetBenchmark.BitSet_And(ItemCount: 1000000) 4.52 ms 26.95 μs 4.50 ms +0.4%
IntSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.96 μs 34.8 ns 4.89 μs +1.4%
SwissSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.82 μs 75.8 ns 4.92 μs -2.1%
IntSetBenchmark.IntSet_Contains(ItemCount: 1000) 1.83 μs 8.7 ns 1.83 μs +0.1%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 1000) 2.82 μs 50.5 ns 2.88 μs -1.9%
IntSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.57 ms 3.56 μs 1.59 ms -0.8%
SwissSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.56 ms 8.99 μs 1.57 ms -0.9%
IntSetBenchmark.IntSet_Contains(ItemCount: 100000) 577.73 μs 2.00 μs 572.80 μs +0.9%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 100000) 648.97 μs 1.70 μs 645.91 μs +0.5%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.68 μs 114.9 ns 4.46 μs +4.9%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 1000) 2.37 μs 4.0 ns 2.37 μs -0.0%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.95 ms 5.01 μs 1.95 ms +0.2%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 100000) 349.31 μs 4.32 μs 352.67 μs -1.0%
EnumMapBenchmark.Dictionary_Enumerate 50.8 ns 0.2 ns 50.8 ns -0.2%
EnumMapBenchmark.EnumMap_Enumerate 41.2 ns 0.4 ns 41.0 ns +0.5%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 1000) 4.40 μs 34.8 ns 4.57 μs -3.7%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 1000) 10.10 μs 38.7 ns 10.12 μs -0.2%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 100000) 498.08 μs 6.43 μs 509.08 μs -2.2%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 100000) 2.02 ms 37.00 μs 2.02 ms +0.1%
LruCacheBenchmark.Dictionary_Get(ItemCount: 1000) 24.98 μs 51.4 ns 25.29 μs -1.2%
LruCacheBenchmark.LruCache_Get(ItemCount: 1000) 6.91 μs 51.2 ns 6.90 μs +0.1%
LruCacheBenchmark.Dictionary_Get(ItemCount: 100000) 27.96 μs 1.78 μs 25.49 μs +9.7%
LruCacheBenchmark.LruCache_Get(ItemCount: 100000) 6.95 μs 25.8 ns 7.17 μs -3.0%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 1000) 4.91 μs 116.7 ns 5.05 μs -2.9%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 1000) 3.54 μs 44.5 ns 3.53 μs +0.3%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 100000) 542.34 μs 2.10 μs 596.87 μs -9.1%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 100000) 1.39 ms 1.08 μs 1.38 ms +0.3%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 1000) 31.21 μs 394.5 ns 29.78 μs +4.8%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 1000) 41.85 μs 1.12 μs 37.98 μs +10.2% ⚠️
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 100000) 14.18 ms 742.85 μs 14.06 ms +0.8%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 100000) 20.41 ms 844.83 μs 19.17 ms +6.5%
EnumMapBenchmark.Dictionary_Lookup 118.2 ns 0.4 ns 118.0 ns +0.1%
EnumMapBenchmark.EnumMap_Lookup 67.0 ns 0.5 ns 66.8 ns +0.3%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 1000) 5.29 μs 88.1 ns 5.18 μs +2.2%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 1000) 2.30 μs 13.2 ns 2.27 μs +1.1%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.76 ms 10.98 μs 1.76 ms -0.1%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 100000) 719.37 μs 3.64 μs 712.80 μs +0.9%
BitSetBenchmark.BitArray_Or(ItemCount: 1024) 56.4 ns 0.6 ns 61.2 ns -7.8%
BitSetBenchmark.BitSet_Or(ItemCount: 1024) 1.26 μs 4.8 ns 1.26 μs -0.0%
BitSetBenchmark.BitArray_Or(ItemCount: 1000000) 44.13 μs 270.9 ns 44.53 μs -0.9%
BitSetBenchmark.BitSet_Or(ItemCount: 1000000) 4.51 ms 22.60 μs 4.52 ms -0.1%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1024) 1.24 μs 3.9 ns 1.24 μs -0.0%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1024) 7.2 ns 0.0 ns 7.2 ns +0.4%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1000000) 4.83 ms 11.21 μs 4.85 ms -0.3%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1000000) 5.19 μs 16.8 ns 5.21 μs -0.2%
LruCacheBenchmark.Dictionary_Put(ItemCount: 1000) 118.89 μs 8.72 μs 118.06 μs +0.7%
LruCacheBenchmark.LruCache_Put(ItemCount: 1000) 549.79 μs 15.70 μs 528.44 μs +4.0%
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 8.28 ms 122.89 μs 6.45 ms +28.5% ⚠️
LruCacheBenchmark.LruCache_Put(ItemCount: 100000) 5.82 ms 39.00 μs 5.77 ms +0.9%
EnumMapBenchmark.Dictionary_Remove 3.95 μs 620.8 ns 3.28 μs +20.2%
EnumMapBenchmark.EnumMap_Remove 1.95 μs 448.5 ns 1.70 μs +14.2%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 1000) 32.66 μs 4.54 μs 27.92 μs +17.0%
IntSetBenchmark.HashSet_Remove(ItemCount: 1000) 35.40 μs 2.46 μs 31.78 μs +11.4%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 1000) 152.16 μs 8.28 μs 151.50 μs +0.4%
IntSetBenchmark.IntSet_Remove(ItemCount: 1000) 88.62 μs 5.93 μs 91.95 μs -3.6%
SwissSetBenchmark.HashSet_Remove(ItemCount: 1000) 34.65 μs 4.95 μs 35.75 μs -3.1%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 1000) 67.68 μs 3.40 μs 84.52 μs -19.9% ✅
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 100000) 2.63 ms 412.92 μs 2.20 ms +19.9%
IntSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.73 ms 25.53 μs 1.74 ms -0.5%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 100000) 2.44 ms 348.33 μs 1.93 ms +26.3%
IntSetBenchmark.IntSet_Remove(ItemCount: 100000) 1.34 ms 13.76 μs 1.33 ms +0.6%
SwissSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.72 ms 10.89 μs 1.72 ms -0.0%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 100000) 1.07 ms 12.85 μs 1.06 ms +1.1%
BitSetBenchmark.BitArray_Xor(ItemCount: 1024) 57.9 ns 1.9 ns 54.6 ns +6.0%
BitSetBenchmark.BitSet_Xor(ItemCount: 1024) 1.26 μs 4.4 ns 1.27 μs -0.5%
BitSetBenchmark.BitArray_Xor(ItemCount: 1000000) 44.70 μs 385.3 ns 44.26 μs +1.0%
BitSetBenchmark.BitSet_Xor(ItemCount: 1000000) 4.53 ms 3.41 μs 4.49 ms +1.0%
SmallSetBenchmark.HashSet_Add(ItemCount: 8) 171.0 ns 12.3 ns 160.6 ns +6.5%
SmallSetBenchmark.SmallSet_Add(ItemCount: 8) 44.9 ns 0.3 ns 44.8 ns +0.2%
SmallSetBenchmark.HashSet_Add(ItemCount: 64) 726.6 ns 3.3 ns 734.6 ns -1.1%
SmallSetBenchmark.SmallSet_Add(ItemCount: 64) 1.66 μs 9.3 ns 1.65 μs +0.3%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 1000) 11.91 μs 99.9 ns 11.98 μs -0.6%
TopKSketchBenchmark.Dictionary_Add(ItemCount: 1000) 12.85 μs 112.8 ns 12.84 μs +0.0%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 1000) 17.18 μs 172.0 ns 16.19 μs +6.1%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 1000) 82.60 μs 688.9 ns 82.49 μs +0.1%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 100000) 4.28 ms 456.43 μs 4.24 ms +0.8%
TopKSketchBenchmark.Dictionary_Add(ItemCount: 100000) 3.38 ms 64.64 μs 3.30 ms +2.6%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 100000) 6.15 ms 63.37 μs 6.17 ms -0.3%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 100000) 13.91 ms 151.71 μs 13.67 ms +1.7%
DisjointSetBenchmark.Dictionary_Components(ItemCount: 1000) 18.24 μs 163.4 ns 18.48 μs -1.3%
DisjointSetBenchmark.DisjointSet_Components(ItemCount: 1000) 16.55 μs 268.4 ns 16.32 μs +1.4%
DisjointSetBenchmark.Dictionary_Components(ItemCount: 100000) 4.25 ms 62.49 μs 4.28 ms -0.6%
DisjointSetBenchmark.DisjointSet_Components(ItemCount: 100000) 3.21 ms 137.32 μs 3.25 ms -1.2%
DisjointSetBenchmark.Dictionary_Connected(ItemCount: 1000) 9.67 μs 13.5 ns 9.67 μs -0.0%
DisjointSetBenchmark.DisjointSet_Connected(ItemCount: 1000) 12.31 μs 13.2 ns 12.11 μs +1.7%
DisjointSetBenchmark.Dictionary_Connected(ItemCount: 100000) 259.88 μs 5.61 μs 255.33 μs +1.8%
DisjointSetBenchmark.DisjointSet_Connected(ItemCount: 100000) 341.44 μs 4.09 μs 341.20 μs +0.1%
SmallSetBenchmark.HashSet_Contains(ItemCount: 8) 37.8 ns 0.5 ns 37.2 ns +1.4%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 8) 19.3 ns 0.2 ns 19.2 ns +0.5%
SmallSetBenchmark.HashSet_Contains(ItemCount: 64) 299.4 ns 0.2 ns 299.1 ns +0.1%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 64) 1.10 μs 10.8 ns 1.08 μs +1.3%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.72 μs 6.1 ns 4.73 μs -0.2%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 1000) 2.42 μs 1.3 ns 2.54 μs -4.8%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.57 ms 2.23 μs 1.59 ms -1.7%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 100000) 737.94 μs 3.03 μs 738.51 μs -0.1%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.55 μs 6.4 ns 4.54 μs +0.1%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 1000) 2.71 μs 4.1 ns 2.71 μs +0.1%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.93 ms 7.62 μs 1.94 ms -0.3%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 100000) 1.18 ms 1.91 μs 1.18 ms -0.3%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 8) 159.9 ns 0.7 ns 162.7 ns -1.7%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 8) 85.0 ns 0.5 ns 88.2 ns -3.7%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 64) 770.6 ns 5.5 ns 779.9 ns -1.2%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 64) 1.07 μs 5.7 ns 1.07 μs -0.8%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.04 μs 2.04 μs 13.09 μs +14.9%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 12.93 μs 131.4 ns 13.13 μs -1.5%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 1000) 11.59 μs 52.1 ns 11.69 μs -0.9%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 1000) 8.03 μs 72.9 ns 8.33 μs -3.6%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.13 ms 65.69 μs 4.13 ms -0.0%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.94 ms 82.29 μs 4.97 ms -0.7%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 100000) 4.76 ms 55.85 μs 4.73 ms +0.6%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 100000) 2.98 ms 2.68 μs 2.98 ms +0.2%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 8) 36.9 ns 0.1 ns 37.0 ns -0.2%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 8) 28.4 ns 3.3 ns 27.3 ns +4.0%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 64) 298.6 ns 1.3 ns 297.3 ns +0.5%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 64) 1.11 μs 15.3 ns 1.10 μs +0.9%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 12.0 ns 4.74 μs -0.3%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.74 μs 12.4 ns 4.75 μs -0.3%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 1000) 2.20 μs 53.8 ns 2.15 μs +2.6%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 1000) 2.35 μs 31.7 ns 2.38 μs -1.1%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 2.59 μs 1.59 ms +0.6%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.61 ms 6.78 μs 1.61 ms +0.2%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 100000) 694.29 μs 2.23 μs 692.96 μs +0.2%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 100000) 700.47 μs 973.6 ns 698.49 μs +0.3%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 8) 1.30 μs 71.8 ns 1.61 μs -19.6% ✅
SmallSetBenchmark.HashSet_Remove(ItemCount: 8) 577.3 ns 185.2 ns 415.3 ns +39.0%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 8) 1.57 μs 237.2 ns 1.38 μs +13.3%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 8) 1.57 μs 211.2 ns 1.14 μs +37.8% ⚠️
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 64) 5.53 μs 806.6 ns 5.43 μs +1.9%
SmallSetBenchmark.HashSet_Remove(ItemCount: 64) 1.62 μs 369.0 ns 1.88 μs -14.1%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 64) 24.98 μs 4.78 μs 28.81 μs -13.3%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 30.95 μs 1.53 μs 24.47 μs +26.5% ⚠️
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 85.42 μs 6.31 μs 84.73 μs +0.8%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 80.40 μs 7.44 μs 80.51 μs -0.1%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 1000) 138.78 μs 8.24 μs 147.96 μs -6.2%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 1000) 142.09 μs 6.37 μs 151.88 μs -6.4%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 1000) 27.89 μs 3.62 μs 26.86 μs +3.8%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 1000) 133.05 μs 6.81 μs 127.98 μs +4.0%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.04 ms 11.43 μs 2.04 ms -0.0%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.07 ms 17.49 μs 2.06 ms +0.4%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 100000) 1.57 ms 31.16 μs 1.58 ms -0.8%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 100000) 1.61 ms 43.00 μs 1.59 ms +1.3%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.72 ms 16.88 μs 1.71 ms +0.5%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 100000) 1.35 ms 35.95 μs 1.36 ms -1.1%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 1000) 29.9 ns 0.2 ns 29.9 ns +0.0%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 1000) 1.22 μs 9.0 ns 1.22 μs -0.1%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 100000) 29.7 ns 0.8 ns 29.9 ns -0.6%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 100000) 1.16 μs 6.3 ns 1.15 μs +0.9%
DisjointSetBenchmark.Dictionary_Union(ItemCount: 1000) 94.45 μs 676.2 ns 95.76 μs -1.4%
DisjointSetBenchmark.DisjointSet_Union(ItemCount: 1000) 26.24 μs 90.0 ns 26.78 μs -2.0%
DisjointSetBenchmark.Dictionary_Union(ItemCount: 100000) 41.05 ms 814.00 μs 41.85 ms -1.9%
DisjointSetBenchmark.DisjointSet_Union(ItemCount: 100000) 8.09 ms 53.86 μs 8.23 ms -1.8%
TrieBenchmark.Dictionary_Add(ItemCount: 1000) 40.81 μs 5.63 μs 34.86 μs +17.0%
TrieBenchmark.Trie_Add(ItemCount: 1000) 555.37 μs 17.34 μs 579.29 μs -4.1%
BloomFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.78 μs 397.7 ns 12.47 μs +2.5%
CeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 13.46 μs 285.3 ns 12.68 μs +6.2%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 1000) 13.07 μs 386.8 ns 12.57 μs +4.0%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 1000) 14.49 μs 16.1 ns 14.47 μs +0.1%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 1000) 9.13 μs 52.4 ns 9.21 μs -0.8%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 1000) 11.96 μs 315.8 ns 11.30 μs +5.8%
TrieBenchmark.Dictionary_Add(ItemCount: 100000) 5.34 ms 1.65 ms 5.24 ms +1.9%
TrieBenchmark.Trie_Add(ItemCount: 100000) 25.53 ms 374.64 μs 25.16 ms +1.5%
BloomFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.58 ms 93.69 μs 4.56 ms +0.6%
CeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 5.10 ms 127.59 μs 5.12 ms -0.3%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 100000) 4.21 ms 492.58 μs 4.23 ms -0.5%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 100000) 1.10 ms 4.92 μs 1.10 ms +0.4%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 100000) 3.21 ms 29.85 μs 3.20 ms +0.3%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 100000) 5.31 ms 62.97 μs 5.26 ms +1.0%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.72 μs 9.0 ns 4.74 μs -0.3%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.75 μs 24.2 ns 4.82 μs -1.4%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.72 μs 5.7 ns 4.72 μs +0.1%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 1000) 13.11 μs 14.9 ns 13.11 μs +0.1%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 1000) 1.85 μs 15.4 ns 1.85 μs -0.1%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 1000) 2.42 μs 3.1 ns 2.42 μs -0.1%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.56 ms 15.66 μs 1.55 ms +0.3%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.56 ms 5.64 μs 1.55 ms +0.6%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.56 ms 5.40 μs 1.51 ms +3.7%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 100000) 868.88 μs 865.8 ns 869.18 μs -0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 100000) 587.67 μs 1.30 μs 585.44 μs +0.4%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 100000) 746.95 μs 1.31 μs 745.98 μs +0.1%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 3.4 ns 4.54 μs -0.1%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 5.9 ns 4.54 μs -0.0%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 1000) 3.53 μs 13.2 ns 3.53 μs -0.1%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 1000) 2.80 μs 2.9 ns 2.80 μs +0.1%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.91 ms 22.21 μs 1.91 ms +0.0%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.95 ms 8.28 μs 1.94 ms +0.6%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 100000) 1.49 ms 485.3 ns 1.49 ms -0.0%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 100000) 1.16 ms 2.31 μs 1.16 ms +0.3%
IndexedPriorityQueueBenchmark.PriorityQueue_DecreaseKey(ItemCount: 1000) 145.30 μs 920.5 ns 147.27 μs -1.3%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_DecreaseKey(ItemCount: 1000) 252.79 μs 985.2 ns 252.28 μs +0.2%
IndexedPriorityQueueBenchmark.PriorityQueue_DecreaseKey(ItemCount: 100000) 33.46 ms 357.03 μs 34.43 ms -2.8%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_DecreaseKey(ItemCount: 100000) 54.63 ms 308.07 μs 54.61 ms +0.0%
IndexedPriorityQueueBenchmark.PriorityQueue_Enqueue(ItemCount: 1000) 4.87 μs 132.5 ns 4.82 μs +1.0%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_Enqueue(ItemCount: 1000) 29.78 μs 213.5 ns 29.66 μs +0.4%
IndexedPriorityQueueBenchmark.PriorityQueue_Enqueue(ItemCount: 100000) 1.08 ms 17.60 μs 1.08 ms -0.3%
IndexedPriorityQueueBenchmark.IndexedPriorityQueue_Enqueue(ItemCount: 100000) 6.12 ms 182.89 μs 6.06 ms +1.0%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.15 μs 452.0 ns 16.29 μs -7.0%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.46 μs 1.96 μs 13.60 μs +13.7%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 1000) 12.28 μs 169.8 ns 11.85 μs +3.7%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 1000) 18.31 μs 272.3 ns 17.57 μs +4.2%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.18 ms 43.76 μs 4.25 ms -1.6%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.75 ms 50.97 μs 4.69 ms +1.4%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 100000) 4.92 ms 52.33 μs 4.85 ms +1.3%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 100000) 8.18 ms 385.46 μs 7.91 ms +3.4%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 18.5 ns 4.74 μs -0.2%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 15.2 ns 4.73 μs -0.1%
TrieBenchmark.Dictionary_Lookup(ItemCount: 1000) 13.32 μs 557.9 ns 13.13 μs +1.4%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 1000) 2.14 μs 4.2 ns 2.14 μs +0.1%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 1000) 2.61 μs 3.8 ns 2.92 μs -10.5% ✅
TrieBenchmark.Trie_Lookup(ItemCount: 1000) 40.35 μs 274.2 ns 40.16 μs +0.5%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 4.92 μs 1.60 ms +0.3%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.56 ms 52.96 μs 1.62 ms -4.2%
TrieBenchmark.Dictionary_Lookup(ItemCount: 100000) 2.70 ms 11.08 μs 2.69 ms +0.5%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 100000) 677.22 μs 1.14 μs 678.24 μs -0.2%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 100000) 835.11 μs 2.80 μs 835.38 μs -0.0%
TrieBenchmark.Trie_Lookup(ItemCount: 100000) 9.00 ms 143.25 μs 8.59 ms +4.9%
TrieBenchmark.Dictionary_PrefixMatch(ItemCount: 1000) 73.51 μs 146.4 ns 73.42 μs +0.1%
TrieBenchmark.Trie_PrefixMatch(ItemCount: 1000) 54.99 μs 309.1 ns 55.30 μs -0.6%
TrieBenchmark.Dictionary_PrefixMatch(ItemCount: 100000) 7.39 ms 12.03 μs 7.42 ms -0.5%
TrieBenchmark.Trie_PrefixMatch(ItemCount: 100000) 9.05 ms 474.25 μs 8.96 ms +1.0%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 27.30 μs 1.60 μs 26.08 μs +4.7%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 89.44 μs 10.10 μs 90.74 μs -1.4%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 85.68 μs 9.97 μs 84.86 μs +1.0%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 1000) 138.09 μs 10.14 μs 142.72 μs -3.2%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 1000) 94.25 μs 6.89 μs 89.33 μs +5.5%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 1000) 133.47 μs 4.13 μs 133.47 μs -0.0%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 1000) 30.13 μs 4.47 μs 32.46 μs -7.2%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 1000) 117.51 μs 10.39 μs 113.34 μs +3.7%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.72 ms 15.82 μs 1.70 ms +1.2%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.05 ms 10.97 μs 2.04 ms +0.2%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.16 ms 65.12 μs 2.16 ms +0.3%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 100000) 1.35 ms 85.53 μs 1.39 ms -2.9%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 2.55 ms 1.69 ms 1.57 ms +62.4%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 100000) 1.91 ms 281.71 μs 1.89 ms +0.6%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.73 ms 16.57 μs 1.71 ms +1.5%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 100000) 1.59 ms 36.16 μs 1.57 ms +1.5%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 1000) 13.77 μs 198.8 ns 12.52 μs +10.0%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 13.36 μs 439.2 ns 12.35 μs +8.2%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 1000) 7.98 μs 26.8 ns 8.01 μs -0.4%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 1000) 9.48 μs 120.8 ns 9.55 μs -0.7%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.77 ms 150.25 μs 4.83 ms -1.3%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 5.10 ms 64.31 μs 5.03 ms +1.3%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 100000) 2.34 ms 21.77 μs 2.32 ms +1.2%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 100000) 3.18 ms 25.15 μs 3.14 ms +1.4%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 1000) 167.76 μs 420.6 ns 165.26 μs +1.5%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 1000) 170.30 μs 738.3 ns 171.12 μs -0.5%
XorFilterBenchmark.HashSet_Build(ItemCount: 1000) 8.33 μs 86.3 ns 8.19 μs +1.8%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 1000) 3.44 ms 65.07 μs 3.33 ms +3.4%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 2.25 ms 7.70 μs 2.26 ms -0.6%
XorFilterBenchmark.XorFilter_Build(ItemCount: 1000) 44.33 μs 968.0 ns 40.06 μs +10.7% ⚠️
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 100000) 28.89 ms 363.04 μs 29.26 ms -1.3%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 100000) 29.47 ms 308.81 μs 29.42 ms +0.2%
XorFilterBenchmark.HashSet_Build(ItemCount: 100000) 2.08 ms 29.06 μs 2.07 ms +0.6%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 100000) 1.46 s 84.77 ms 1.47 s -0.8%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 100000) 1.41 s 40.94 ms 1.39 s +1.4%
XorFilterBenchmark.XorFilter_Build(ItemCount: 100000) 13.51 ms 155.60 μs 13.65 ms -1.0%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 15.3 ns 4.73 μs +0.1%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 1000) 7.08 μs 3.2 ns 7.09 μs -0.1%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.71 μs 7.3 ns 4.71 μs -0.1%
XorFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 9.2 ns 4.74 μs -0.0%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 1000) 5.55 μs 3.5 ns 5.55 μs +0.0%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 1000) 78.97 μs 84.8 ns 79.01 μs -0.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 1000) 2.03 μs 27.6 ns 2.04 μs -0.2%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 1000) 7.56 μs 10.5 ns 7.55 μs +0.1%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.52 ms 11.65 μs 1.51 ms +0.7%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 100000) 1.84 ms 17.27 μs 1.83 ms +0.5%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.50 ms 4.00 μs 1.51 ms -0.1%
XorFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.47 ms 45.21 μs 1.51 ms -2.5%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 100000) 1.97 ms 4.08 μs 1.97 ms -0.0%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 100000) 8.19 ms 43.87 μs 8.11 ms +1.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 100000) 540.57 μs 7.16 μs 535.83 μs +0.9%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 100000) 801.66 μs 697.2 ns 801.29 μs +0.0%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.57 μs 6.7 ns 4.56 μs +0.1%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.56 μs 2.0 ns 4.56 μs -0.0%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 1000) 9.62 μs 4.7 ns 9.63 μs -0.0%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 1000) 7.55 μs 9.1 ns 7.55 μs -0.0%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.99 ms 5.37 μs 2.00 ms -0.3%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.98 ms 27.53 μs 2.00 ms -1.3%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 100000) 993.79 μs 14.80 μs 985.14 μs +0.9%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 100000) 804.90 μs 480.0 ns 804.88 μs +0.0%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.32 μs 670.9 ns 14.76 μs +3.8%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.48 μs 193.1 ns 13.02 μs +3.5%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 1000) 9.10 μs 228.9 ns 8.56 μs +6.3%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 1000) 30.01 μs 278.4 ns 29.23 μs +2.7%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.27 ms 82.87 μs 5.20 ms +1.5%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.03 ms 87.77 μs 4.95 ms +1.6%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 100000) 7.58 ms 176.60 μs 7.56 ms +0.3%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 100000) 3.86 ms 32.12 μs 3.82 ms +1.0%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 1000) 7.60 μs 9.5 ns 7.62 μs -0.2%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 5.03 μs 42.8 ns 5.03 μs +0.1%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.60 μs 3.9 ns 4.85 μs -5.2%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 1000) 81.95 μs 1.02 μs 80.79 μs +1.4%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 1000) 2.28 μs 17.3 ns 2.37 μs -3.7%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 1000) 2.92 μs 10.5 ns 3.20 μs -8.7%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 100000) 1.85 ms 11.65 μs 1.91 ms -3.2%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.58 ms 10.40 μs 1.57 ms +0.2%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.60 ms 8.59 μs 1.60 ms -0.2%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 100000) 8.30 ms 36.98 μs 8.37 ms -0.8%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 100000) 668.50 μs 12.68 μs 701.97 μs -4.8%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 100000) 671.35 μs 1.41 μs 653.46 μs +2.7%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 81.73 μs 7.92 μs 80.87 μs +1.1%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 27.85 μs 2.41 μs 27.71 μs +0.5%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 77.56 μs 4.87 μs 80.91 μs -4.1%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 1000) 86.75 μs 7.82 μs 86.77 μs -0.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 1000) 144.23 μs 7.46 μs 154.09 μs -6.4%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 70.98 μs 3.75 μs 70.39 μs +0.8%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 1000) 13.90 μs 121.1 ns 13.51 μs +2.9%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 1000) 14.28 μs 23.8 ns 14.24 μs +0.3%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.97 ms 35.75 μs 1.98 ms -0.7%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.68 ms 15.35 μs 1.68 ms -0.2%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.00 ms 25.28 μs 1.99 ms +0.4%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 100000) 1.89 ms 162.74 μs 2.86 ms -33.7%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 100000) 1.34 ms 56.28 μs 1.33 ms +0.7%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 100000) 1.28 ms 36.22 μs 1.29 ms -0.2%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 100000) 3.94 ms 147.60 μs 3.71 ms +6.3%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 100000) 4.51 ms 7.46 μs 4.50 ms +0.0%
Hashers (100)
Benchmark This PR StdDev main Δ
StringHasherBenchmark.Bcl_GetHashCode(Shape: ShortAscii) 15.41 μs 30.5 ns 15.39 μs +0.1%
StringHasherBenchmark.EqualityComparer_Default(Shape: ShortAscii) 15.38 μs 28.4 ns 15.35 μs +0.1%
StringHasherBenchmark.Djb2(Shape: ShortAscii) 22.02 μs 51.3 ns 22.02 μs -0.0%
StringHasherBenchmark.Djb2A(Shape: ShortAscii) 22.02 μs 15.8 ns 22.03 μs -0.0%
StringHasherBenchmark.Sdbm(Shape: ShortAscii) 32.85 μs 24.5 ns 32.85 μs +0.0%
StringHasherBenchmark.Elf(Shape: ShortAscii) 44.01 μs 120.9 ns 43.89 μs +0.3%
StringHasherBenchmark.Crc32(Shape: ShortAscii) 49.90 μs 54.3 ns 49.86 μs +0.1%
StringHasherBenchmark.Adler32(Shape: ShortAscii) 96.21 μs 74.8 ns 96.18 μs +0.0%
StringHasherBenchmark.FnV1(Shape: ShortAscii) 25.34 μs 20.6 ns 25.34 μs -0.0%
StringHasherBenchmark.FnV1_64(Shape: ShortAscii) 25.47 μs 24.5 ns 25.45 μs +0.1%
StringHasherBenchmark.FnV1A(Shape: ShortAscii) 10.64 μs 22.0 ns 10.62 μs +0.1%
StringHasherBenchmark.FnV1A_Full(Shape: ShortAscii) 22.86 μs 51.4 ns 22.86 μs +0.0%
StringHasherBenchmark.FnV1A_64(Shape: ShortAscii) 25.71 μs 27.2 ns 25.72 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: ShortAscii) 39.26 μs 19.7 ns 39.27 μs -0.0%
StringHasherBenchmark.Murmur2(Shape: ShortAscii) 15.19 μs 26.5 ns 15.19 μs -0.1%
StringHasherBenchmark.Murmur3(Shape: ShortAscii) 17.31 μs 45.2 ns 17.32 μs -0.1%
StringHasherBenchmark.XxHash32(Shape: ShortAscii) 16.91 μs 15.2 ns 16.91 μs -0.0%
StringHasherBenchmark.XxHash64(Shape: ShortAscii) 18.11 μs 13.6 ns 18.07 μs +0.2%
StringHasherBenchmark.XxHash3(Shape: ShortAscii) 14.85 μs 57.8 ns 14.85 μs -0.0%
StringHasherBenchmark.CityHash64(Shape: ShortAscii) 15.22 μs 9.5 ns 15.22 μs +0.0%
StringHasherBenchmark.MetroHash64(Shape: ShortAscii) 15.00 μs 7.8 ns 15.00 μs -0.0%
StringHasherBenchmark.SipHash13(Shape: ShortAscii) 27.38 μs 24.7 ns 27.37 μs +0.0%
StringHasherBenchmark.SipHash24(Shape: ShortAscii) 38.49 μs 38.1 ns 38.47 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: ShortAscii) 49.98 μs 59.0 ns 50.04 μs -0.1%
StringHasherBenchmark.HighwayHash64(Shape: ShortAscii) 479.02 μs 281.0 ns 478.96 μs +0.0%
StringHasherBenchmark.Bcl_GetHashCode(Shape: LongAscii) 96.85 μs 31.9 ns 96.93 μs -0.1%
StringHasherBenchmark.EqualityComparer_Default(Shape: LongAscii) 96.48 μs 47.9 ns 96.69 μs -0.2%
StringHasherBenchmark.Djb2(Shape: LongAscii) 229.21 μs 69.7 ns 229.36 μs -0.1%
StringHasherBenchmark.Djb2A(Shape: LongAscii) 229.24 μs 67.5 ns 229.33 μs -0.0%
StringHasherBenchmark.Sdbm(Shape: LongAscii) 307.94 μs 121.2 ns 308.09 μs -0.0%
StringHasherBenchmark.Elf(Shape: LongAscii) 577.82 μs 321.8 ns 582.29 μs -0.8%
StringHasherBenchmark.Crc32(Shape: LongAscii) 589.43 μs 247.8 ns 589.41 μs +0.0%
StringHasherBenchmark.Adler32(Shape: LongAscii) 789.12 μs 356.2 ns 789.08 μs +0.0%
StringHasherBenchmark.FnV1(Shape: LongAscii) 289.58 μs 135.1 ns 289.45 μs +0.0%
StringHasherBenchmark.FnV1_64(Shape: LongAscii) 284.47 μs 146.5 ns 284.42 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: LongAscii) 122.28 μs 44.0 ns 122.34 μs -0.1%
StringHasherBenchmark.FnV1A_Full(Shape: LongAscii) 281.61 μs 95.4 ns 281.67 μs -0.0%
StringHasherBenchmark.FnV1A_64(Shape: LongAscii) 286.75 μs 82.9 ns 286.81 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: LongAscii) 378.47 μs 99.0 ns 378.44 μs +0.0%
StringHasherBenchmark.Murmur2(Shape: LongAscii) 101.85 μs 111.3 ns 101.76 μs +0.1%
StringHasherBenchmark.Murmur3(Shape: LongAscii) 111.49 μs 1.48 μs 112.92 μs -1.3%
StringHasherBenchmark.XxHash32(Shape: LongAscii) 73.23 μs 43.2 ns 73.20 μs +0.0%
StringHasherBenchmark.XxHash64(Shape: LongAscii) 90.69 μs 908.2 ns 90.00 μs +0.8%
StringHasherBenchmark.XxHash3(Shape: LongAscii) 70.51 μs 297.4 ns 69.93 μs +0.8%
StringHasherBenchmark.CityHash64(Shape: LongAscii) 123.32 μs 1.45 μs 122.37 μs +0.8%
StringHasherBenchmark.MetroHash64(Shape: LongAscii) 78.60 μs 2.87 μs 77.54 μs +1.4%
StringHasherBenchmark.SipHash13(Shape: LongAscii) 114.61 μs 74.9 ns 114.64 μs -0.0%
StringHasherBenchmark.SipHash24(Shape: LongAscii) 161.03 μs 743.7 ns 161.00 μs +0.0%
StringHasherBenchmark.HalfSipHash24(Shape: LongAscii) 247.58 μs 209.2 ns 247.55 μs +0.0%
StringHasherBenchmark.HighwayHash64(Shape: LongAscii) 847.02 μs 5.98 μs 828.37 μs +2.3%
StringHasherBenchmark.Bcl_GetHashCode(Shape: NonAscii) 22.89 μs 5.9 ns 22.88 μs +0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: NonAscii) 22.82 μs 8.1 ns 22.82 μs +0.0%
StringHasherBenchmark.Djb2(Shape: NonAscii) 43.42 μs 37.8 ns 43.41 μs +0.0%
StringHasherBenchmark.Djb2A(Shape: NonAscii) 43.42 μs 38.1 ns 43.43 μs -0.0%
StringHasherBenchmark.Sdbm(Shape: NonAscii) 61.57 μs 33.3 ns 61.57 μs -0.0%
StringHasherBenchmark.Elf(Shape: NonAscii) 99.70 μs 208.3 ns 99.74 μs -0.0%
StringHasherBenchmark.Crc32(Shape: NonAscii) 102.64 μs 64.1 ns 102.64 μs +0.0%
StringHasherBenchmark.Adler32(Shape: NonAscii) 175.42 μs 121.9 ns 175.40 μs +0.0%
StringHasherBenchmark.FnV1(Shape: NonAscii) 47.65 μs 52.9 ns 47.65 μs +0.0%
StringHasherBenchmark.FnV1_64(Shape: NonAscii) 50.03 μs 54.7 ns 50.02 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: NonAscii) 21.62 μs 26.4 ns 21.63 μs -0.1%
StringHasherBenchmark.FnV1A_Full(Shape: NonAscii) 45.06 μs 47.0 ns 45.06 μs +0.0%
StringHasherBenchmark.FnV1A_64(Shape: NonAscii) 49.61 μs 67.9 ns 49.61 μs +0.0%
StringHasherBenchmark.JenkinsOaat(Shape: NonAscii) 73.10 μs 48.2 ns 73.18 μs -0.1%
StringHasherBenchmark.Murmur2(Shape: NonAscii) 27.26 μs 163.1 ns 27.25 μs +0.0%
StringHasherBenchmark.Murmur3(Shape: NonAscii) 31.95 μs 114.0 ns 31.82 μs +0.4%
StringHasherBenchmark.XxHash32(Shape: NonAscii) 23.91 μs 13.0 ns 23.91 μs +0.0%
StringHasherBenchmark.XxHash64(Shape: NonAscii) 29.13 μs 24.2 ns 29.13 μs +0.0%
StringHasherBenchmark.XxHash3(Shape: NonAscii) 22.92 μs 34.5 ns 23.10 μs -0.8%
StringHasherBenchmark.CityHash64(Shape: NonAscii) 22.05 μs 30.6 ns 22.01 μs +0.1%
StringHasherBenchmark.MetroHash64(Shape: NonAscii) 25.62 μs 16.0 ns 25.62 μs +0.0%
StringHasherBenchmark.SipHash13(Shape: NonAscii) 37.02 μs 157.9 ns 37.01 μs +0.0%
StringHasherBenchmark.SipHash24(Shape: NonAscii) 51.25 μs 366.1 ns 51.21 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: NonAscii) 72.81 μs 807.9 ns 73.19 μs -0.5%
StringHasherBenchmark.HighwayHash64(Shape: NonAscii) 511.82 μs 1.34 μs 512.88 μs -0.2%
IntegerHasherBenchmark.Guid_Bcl 1.49 μs 5.2 ns 1.52 μs -1.9%
IntegerHasherBenchmark.Guid_EqualityComparer 3.47 μs 53.7 ns 3.44 μs +0.7%
IntegerHasherBenchmark.Guid_Celerity 9.12 μs 27.0 ns 9.10 μs +0.2%
IntegerHasherBenchmark.Int32_Bcl 753.4 ns 22.8 ns 774.3 ns -2.7%
IntegerHasherBenchmark.Int32_EqualityComparer 764.7 ns 0.8 ns 764.2 ns +0.1%
IntegerHasherBenchmark.Int32_Identity 763.6 ns 0.4 ns 764.3 ns -0.1%
IntegerHasherBenchmark.Int32_WangNaive 1.41 μs 0.4 ns 1.41 μs -0.0%
IntegerHasherBenchmark.Int32_Wang 3.40 μs 14.5 ns 3.42 μs -0.5%
IntegerHasherBenchmark.Int32_Murmur3 3.05 μs 1.2 ns 3.05 μs +0.0%
IntegerHasherBenchmark.Int64_Bcl 1.68 μs 0.3 ns 1.68 μs -0.0%
IntegerHasherBenchmark.Int64_EqualityComparer 1.41 μs 0.4 ns 1.41 μs -0.0%
IntegerHasherBenchmark.Int64_Identity 765.0 ns 0.7 ns 764.1 ns +0.1%
IntegerHasherBenchmark.Int64_WangNaive 2.11 μs 3.4 ns 2.11 μs +0.0%
IntegerHasherBenchmark.Int64_Wang 4.70 μs 2.6 ns 4.70 μs -0.0%
IntegerHasherBenchmark.Int64_Murmur3 2.68 μs 2.2 ns 2.68 μs +0.1%
IntegerHasherBenchmark.UInt32_Bcl 753.8 ns 20.3 ns 774.5 ns -2.7%
IntegerHasherBenchmark.UInt32_EqualityComparer 759.3 ns 5.2 ns 764.2 ns -0.6%
IntegerHasherBenchmark.UInt32_Default 1.41 μs 0.6 ns 1.41 μs +0.0%
IntegerHasherBenchmark.UInt32_Wang 3.42 μs 2.4 ns 3.42 μs -0.0%
IntegerHasherBenchmark.UInt32_Murmur3 3.05 μs 3.2 ns 3.05 μs +0.0%
IntegerHasherBenchmark.UInt64_Bcl 1.68 μs 0.5 ns 1.68 μs +0.0%
IntegerHasherBenchmark.UInt64_EqualityComparer 1.41 μs 0.3 ns 1.41 μs -0.0%
IntegerHasherBenchmark.UInt64_Default 2.68 μs 0.9 ns 2.70 μs -0.7%
IntegerHasherBenchmark.UInt64_Wang 4.70 μs 3.0 ns 4.70 μs +0.0%
IntegerHasherBenchmark.UInt64_WangNaive 2.10 μs 0.9 ns 2.10 μs -0.0%

Same-runner A/B (sharded 6-way): main (b48cd75) 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.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 23, 2026 06:13
@marius-bughiu
marius-bughiu merged commit 4a4deb0 into main Jul 23, 2026
14 checks passed

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 1 out of 1 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

src/Celerity.Hashing/StringFnV1AHasher.cs:41

  • The comment mixes “UTF-16 code unit” (line 39) with “Characters” (line 39) and “high byte” wording (line 40). Since the loop processes UTF-16 code units (foreach (char c ...)) and other hashers/docs in this repo consistently describe the “upper byte”, updating this comment keeps the documentation precise and consistent with the rest of the hashing implementations.
            // Fold only the low byte of each UTF-16 code unit. Characters that share a
            // low byte but differ in their high byte (i.e., U+0100 and above) collide here; use
            // StringFnV1AFullHasher when that distinction matters.

@marius-bughiu
marius-bughiu deleted the chore/code-review/fnv1a-hasher-comment 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

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