Skip to content

docs(hashing): fix misquoted note in StringFnV1AFullHasher (#254) - #276

Merged
marius-bughiu merged 1 commit into
mainfrom
claude/github-issue-254-c3520c
Jul 18, 2026
Merged

docs(hashing): fix misquoted note in StringFnV1AFullHasher (#254)#276
marius-bughiu merged 1 commit into
mainfrom
claude/github-issue-254-c3520c

Conversation

@marius-bughiu

Copy link
Copy Markdown
Owner

Summary

Fixes #254. The XML doc comment for StringFnV1AFullHasher presented a direct quotation (in quotation marks, attributed to StringFnV1AHasher's remarks) that did not match the source verbatim — the quoted wording was a conflation of two different hashers.

  • The quote read: "for keys with significant non-ASCII content, a full UTF-8 or UTF-16 hash is preferable."
  • StringFnV1AHasher's actual note reads: "For Unicode-heavy workloads, a full UTF-8 or UTF-16 hash is preferable."
  • The phrase "for keys with significant non-ASCII content" actually originates in StringMurmur3Hasher, not StringFnV1AHasher.

This replaces the misquoted text with the verbatim note from StringFnV1AHasher, so the quotation marks now promise a quote that matches its source.

Scope

One file, doc-only. No behavioral change.

🤖 Generated with Claude Code

The XML doc for StringFnV1AFullHasher quoted StringFnV1AHasher's remarks
as "for keys with significant non-ASCII content, a full UTF-8 or UTF-16
hash is preferable." That wording is a conflation of two hashers: the
phrase "for keys with significant non-ASCII content" actually comes from
StringMurmur3Hasher, not StringFnV1AHasher.

Replace it with the verbatim note from StringFnV1AHasher: "For
Unicode-heavy workloads, a full UTF-8 or UTF-16 hash is preferable."

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 18, 2026 15:15
@marius-bughiu
marius-bughiu merged commit 151d60e into main Jul 18, 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

This PR corrects a misattributed “direct quote” in the public XML documentation for StringFnV1AFullHasher, aligning the quoted sentence with the exact wording used in StringFnV1AHasher’s remarks.

Changes:

  • Replaces the misquoted sentence in StringFnV1AFullHasher’s <remarks> with the verbatim note from StringFnV1AHasher.
  • Keeps the documentation’s intent (guidance on Unicode-heavy workloads) while fixing the quotation accuracy.

@github-actions

Copy link
Copy Markdown

Coverage

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

@github-actions

Copy link
Copy Markdown

Benchmarks

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

Highlights

Benchmark This PR StdDev main Δ
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 100000) 488.94 μs 844.6 ns 544.08 μs -10.1% ✅
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 1000) 13.74 μs 1.22 μs 12.11 μs +13.5% ⚠️
SwissSetBenchmark.HashSet_Add(ItemCount: 1000) 13.63 μs 232.7 ns 12.23 μs +11.5% ⚠️
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 3.65 ms 184.15 μs 2.51 ms +45.7% ⚠️
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 100000) 7.20 ms 185.69 μs 8.51 ms -15.4% ✅
SwissSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.90 ms 127.36 μs 1.72 ms +10.5% ⚠️
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 100000) 636.63 μs 8.64 μs 708.75 μs -10.2% ✅
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 2.86 ms 2.08 ms 6.34 ms -54.9% ✅
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 73.49 μs 2.84 μs 83.72 μs -12.2% ✅
Collections (376)
Benchmark This PR StdDev main Δ
TopKSketchBenchmark.Dictionary_Add(ItemCount: 1000) 13.30 μs 108.7 ns 13.28 μs +0.1%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 1000) 80.40 μs 1.70 μs 81.99 μs -1.9%
TopKSketchBenchmark.Dictionary_Add(ItemCount: 100000) 3.34 ms 138.20 μs 3.33 ms +0.3%
TopKSketchBenchmark.TopKSketch_Add(ItemCount: 100000) 13.69 ms 65.92 μs 13.74 ms -0.4%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 1000) 30.5 ns 0.5 ns 30.9 ns -1.4%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 1000) 1.24 μs 4.4 ns 1.28 μs -3.1%
TopKSketchBenchmark.Dictionary_TopK(ItemCount: 100000) 31.5 ns 0.4 ns 30.4 ns +3.5%
TopKSketchBenchmark.TopKSketch_TopK(ItemCount: 100000) 1.18 μs 9.0 ns 1.23 μs -3.9%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 1000) 10.50 μs 45.4 ns 10.59 μs -0.9%
LongSetBenchmark.HashSet_Add(ItemCount: 1000) 14.09 μs 369.8 ns 14.57 μs -3.3%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 1000) 10.45 μs 80.9 ns 10.52 μs -0.7%
LongSetBenchmark.LongSet_Add(ItemCount: 1000) 9.78 μs 214.7 ns 9.98 μs -2.1%
CountMinSketchBenchmark.Dictionary_Add(ItemCount: 100000) 1.45 ms 3.85 μs 1.45 ms +0.2%
LongSetBenchmark.HashSet_Add(ItemCount: 100000) 4.72 ms 143.94 μs 4.82 ms -2.0%
CountMinSketchBenchmark.CountMinSketch_Add(ItemCount: 100000) 933.17 μs 3.70 μs 930.10 μs +0.3%
LongSetBenchmark.LongSet_Add(ItemCount: 100000) 6.20 ms 60.82 μs 6.30 ms -1.5%
LongSetBenchmark.HashSet_Contains(ItemCount: 1000) 5.92 μs 1.13 μs 4.80 μs +23.3%
LongSetBenchmark.LongSet_Contains(ItemCount: 1000) 2.00 μs 9.3 ns 2.01 μs -0.3%
LongSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.64 ms 12.19 μs 1.65 ms -0.4%
LongSetBenchmark.LongSet_Contains(ItemCount: 100000) 647.09 μs 715.3 ns 647.40 μs -0.0%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 1000) 10.13 μs 46.0 ns 10.38 μs -2.4%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 1000) 5.67 μs 124.0 ns 5.63 μs +0.6%
CelerityMultiSetBenchmark.Dictionary_Count(ItemCount: 100000) 1.45 ms 8.84 μs 1.47 ms -1.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Count(ItemCount: 100000) 715.28 μs 22.52 μs 699.65 μs +2.2%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 1000) 1.37 μs 0.9 ns 1.37 μs -0.1%
DequeBenchmark.Deque_Enumerate(ItemCount: 1000) 941.7 ns 0.4 ns 942.8 ns -0.1%
DequeBenchmark.LinkedList_Enumerate(ItemCount: 100000) 134.70 μs 82.4 ns 134.97 μs -0.2%
DequeBenchmark.Deque_Enumerate(ItemCount: 100000) 93.73 μs 74.9 ns 93.86 μs -0.1%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 1000) 4.48 μs 97.9 ns 4.38 μs +2.4%
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 1000) 10.07 μs 9.8 ns 9.79 μs +2.9%
CountMinSketchBenchmark.Dictionary_Estimate(ItemCount: 100000) 488.94 μs 844.6 ns 544.08 μs -10.1% ✅
CountMinSketchBenchmark.CountMinSketch_Estimate(ItemCount: 100000) 1.97 ms 2.74 μs 1.97 ms -0.1%
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 15.13 μs 447.5 ns 14.63 μs +3.4%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 1000) 13.74 μs 1.22 μs 12.11 μs +13.5% ⚠️
HashCachingDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.86 ms 112.00 μs 4.82 ms +0.8%
HashCachingDictionaryBenchmark.HashCachingDictionary_Insert(ItemCount: 100000) 6.75 ms 302.18 μs 6.95 ms -2.9%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.68 μs 5.4 ns 4.68 μs +0.0%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.73 μs 8.8 ns 4.70 μs +0.6%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 1000) 1.63 μs 20.0 ns 1.61 μs +0.9%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 1000) 2.66 μs 2.9 ns 2.70 μs -1.3%
CelerityMultiSetBenchmark.Dictionary_Lookup(ItemCount: 100000) 628.66 μs 12.86 μs 634.63 μs -0.9%
HashCachingDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.62 ms 2.74 μs 1.62 ms -0.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Lookup(ItemCount: 100000) 191.69 μs 442.5 ns 191.21 μs +0.2%
HashCachingDictionaryBenchmark.HashCachingDictionary_Lookup(ItemCount: 100000) 818.94 μs 5.80 μs 822.01 μs -0.4%
DequeBenchmark.LinkedList_PushFront(ItemCount: 1000) 41.63 μs 7.13 μs 46.69 μs -10.8%
DequeBenchmark.Deque_PushFront(ItemCount: 1000) 18.83 μs 1.16 μs 18.71 μs +0.6%
DequeBenchmark.LinkedList_PushFront(ItemCount: 100000) 1.83 ms 49.20 μs 1.86 ms -1.4%
DequeBenchmark.Deque_PushFront(ItemCount: 100000) 753.67 μs 158.64 μs 740.79 μs +1.7%
DequeBenchmark.LinkedList_Queue(ItemCount: 1000) 61.48 μs 4.47 μs 61.54 μs -0.1%
DequeBenchmark.Deque_Queue(ItemCount: 1000) 34.84 μs 3.56 μs 36.52 μs -4.6%
DequeBenchmark.LinkedList_Queue(ItemCount: 100000) 4.56 ms 302.50 μs 4.37 ms +4.3%
DequeBenchmark.Deque_Queue(ItemCount: 100000) 424.75 μs 17.70 μs 415.64 μs +2.2%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 1000) 57.54 μs 4.64 μs 55.08 μs +4.5%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 84.17 μs 8.51 μs 82.02 μs +2.6%
LongSetBenchmark.HashSet_Remove(ItemCount: 1000) 79.46 μs 5.53 μs 78.43 μs +1.3%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 1000) 95.09 μs 9.16 μs 100.19 μs -5.1%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 1000) 127.98 μs 9.96 μs 122.00 μs +4.9%
LongSetBenchmark.LongSet_Remove(ItemCount: 1000) 88.74 μs 5.33 μs 85.70 μs +3.5%
CelerityMultiSetBenchmark.Dictionary_Remove(ItemCount: 100000) 556.19 μs 18.41 μs 554.89 μs +0.2%
HashCachingDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.05 ms 13.14 μs 2.07 ms -1.0%
LongSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.99 ms 22.64 μs 2.01 ms -1.0%
CelerityMultiSetBenchmark.CelerityMultiSet_Remove(ItemCount: 100000) 1.49 ms 15.94 μs 1.50 ms -0.8%
HashCachingDictionaryBenchmark.HashCachingDictionary_Remove(ItemCount: 100000) 1.87 ms 88.17 μs 1.92 ms -2.6%
LongSetBenchmark.LongSet_Remove(ItemCount: 100000) 1.46 ms 25.66 μs 1.55 ms -5.6%
IntSetBenchmark.HashSet_Add(ItemCount: 1000) 13.67 μs 401.1 ns 13.70 μs -0.2%
SwissSetBenchmark.HashSet_Add(ItemCount: 1000) 13.63 μs 232.7 ns 12.23 μs +11.5% ⚠️
IntSetBenchmark.IntSet_Add(ItemCount: 1000) 8.95 μs 145.0 ns 8.97 μs -0.2%
SwissSetBenchmark.SwissSet_Add(ItemCount: 1000) 27.18 μs 91.1 ns 26.58 μs +2.3%
IntSetBenchmark.HashSet_Add(ItemCount: 100000) 5.06 ms 132.18 μs 5.09 ms -0.6%
SwissSetBenchmark.HashSet_Add(ItemCount: 100000) 4.88 ms 88.22 μs 4.76 ms +2.5%
IntSetBenchmark.IntSet_Add(ItemCount: 100000) 3.22 ms 46.79 μs 3.22 ms +0.1%
SwissSetBenchmark.SwissSet_Add(ItemCount: 100000) 4.67 ms 29.55 μs 4.57 ms +2.1%
BitSetBenchmark.BitArray_And(ItemCount: 1024) 58.3 ns 2.1 ns 59.5 ns -2.1%
BitSetBenchmark.BitSet_And(ItemCount: 1024) 1.56 μs 344.5 ns 1.57 μs -0.8%
BitSetBenchmark.BitArray_And(ItemCount: 1000000) 45.14 μs 564.1 ns 45.32 μs -0.4%
BitSetBenchmark.BitSet_And(ItemCount: 1000000) 4.48 ms 4.21 μs 4.48 ms -0.0%
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 1000) 167.42 μs 600.7 ns 164.44 μs +1.8%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 1000) 3.65 ms 184.15 μs 2.51 ms +45.7% ⚠️
FrozenCeleritySetBenchmark.FrozenSet_Build(ItemCount: 100000) 31.29 ms 696.34 μs 29.41 ms +6.4%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Build(ItemCount: 100000) 1.67 s 77.72 ms 1.56 s +7.0%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 1000) 6.88 μs 17.7 ns 6.90 μs -0.3%
IntSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 7.4 ns 4.74 μs +0.1%
SwissSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 16.6 ns 4.75 μs -0.3%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 1000) 90.09 μs 813.2 ns 89.32 μs +0.9%
IntSetBenchmark.IntSet_Contains(ItemCount: 1000) 1.80 μs 13.0 ns 1.81 μs -0.7%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 1000) 2.77 μs 3.7 ns 2.78 μs -0.2%
FrozenCeleritySetBenchmark.FrozenSet_Contains(ItemCount: 100000) 1.98 ms 12.18 μs 2.02 ms -1.9%
IntSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.62 ms 49.27 μs 1.56 ms +3.9%
SwissSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.60 ms 6.57 μs 1.57 ms +2.1%
FrozenCeleritySetBenchmark.FrozenCeleritySet_Contains(ItemCount: 100000) 7.20 ms 185.69 μs 8.51 ms -15.4% ✅
IntSetBenchmark.IntSet_Contains(ItemCount: 100000) 579.25 μs 1.29 μs 575.26 μs +0.7%
SwissSetBenchmark.SwissSet_Contains(ItemCount: 100000) 653.29 μs 6.03 μs 654.69 μs -0.2%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 4.6 ns 4.54 μs +0.0%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 1000) 2.37 μs 5.7 ns 2.37 μs +0.1%
SwissSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.97 ms 6.13 μs 1.89 ms +4.0%
SwissSetBenchmark.SwissSet_ContainsMissing(ItemCount: 100000) 352.57 μs 1.16 μs 347.68 μs +1.4%
LruCacheBenchmark.Dictionary_Get(ItemCount: 1000) 27.27 μs 2.50 μs 25.26 μs +8.0%
LruCacheBenchmark.LruCache_Get(ItemCount: 1000) 6.85 μs 51.1 ns 6.85 μs -0.0%
LruCacheBenchmark.Dictionary_Get(ItemCount: 100000) 26.60 μs 1.33 μs 25.78 μs +3.2%
LruCacheBenchmark.LruCache_Get(ItemCount: 100000) 7.02 μs 80.8 ns 7.10 μs -1.1%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 1000) 4.86 μs 41.8 ns 4.78 μs +1.5%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 1000) 3.49 μs 1.6 ns 3.49 μs -0.1%
LruCacheBenchmark.Dictionary_GetMissing(ItemCount: 100000) 535.18 μs 15.24 μs 569.60 μs -6.0%
LruCacheBenchmark.LruCache_GetMissing(ItemCount: 100000) 1.38 ms 1.84 μs 1.37 ms +0.3%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 1000) 31.28 μs 915.9 ns 30.92 μs +1.2%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 1000) 39.79 μs 474.9 ns 40.81 μs -2.5%
CelerityMultiMapBenchmark.Dictionary_Insert(ItemCount: 100000) 13.24 ms 88.20 μs 12.93 ms +2.4%
CelerityMultiMapBenchmark.CelerityMultiMap_Insert(ItemCount: 100000) 17.65 ms 162.06 μs 17.32 ms +1.9%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.96 μs 91.8 ns 5.09 μs -2.5%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 1000) 2.27 μs 8.1 ns 2.27 μs +0.2%
CelerityMultiMapBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.80 ms 21.32 μs 1.73 ms +3.8%
CelerityMultiMapBenchmark.CelerityMultiMap_Lookup(ItemCount: 100000) 746.72 μs 12.31 μs 725.49 μs +2.9%
BitSetBenchmark.BitArray_Or(ItemCount: 1024) 58.7 ns 2.4 ns 62.5 ns -6.0%
BitSetBenchmark.BitSet_Or(ItemCount: 1024) 1.25 μs 8.8 ns 1.22 μs +2.5%
BitSetBenchmark.BitArray_Or(ItemCount: 1000000) 45.01 μs 457.3 ns 45.23 μs -0.5%
BitSetBenchmark.BitSet_Or(ItemCount: 1000000) 4.48 ms 4.22 μs 4.48 ms -0.1%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1024) 1.24 μs 4.3 ns 1.24 μs +0.1%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1024) 7.1 ns 0.0 ns 7.1 ns -0.2%
BitSetBenchmark.BitArray_PopCount(ItemCount: 1000000) 4.83 ms 8.82 μs 4.83 ms +0.1%
BitSetBenchmark.BitSet_PopCount(ItemCount: 1000000) 4.94 μs 4.9 ns 4.94 μs -0.0%
LruCacheBenchmark.Dictionary_Put(ItemCount: 1000) 100.17 μs 1.72 μs 99.72 μs +0.5%
LruCacheBenchmark.LruCache_Put(ItemCount: 1000) 532.97 μs 20.94 μs 533.23 μs -0.0%
LruCacheBenchmark.Dictionary_Put(ItemCount: 100000) 8.24 ms 95.42 μs 8.32 ms -0.9%
LruCacheBenchmark.LruCache_Put(ItemCount: 100000) 5.78 ms 26.44 μs 5.77 ms +0.1%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 1000) 31.18 μs 5.67 μs 27.29 μs +14.3%
IntSetBenchmark.HashSet_Remove(ItemCount: 1000) 27.67 μs 1.45 μs 31.09 μs -11.0%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 1000) 141.15 μs 11.54 μs 153.18 μs -7.9%
IntSetBenchmark.IntSet_Remove(ItemCount: 1000) 85.70 μs 5.84 μs 88.64 μs -3.3%
SwissSetBenchmark.HashSet_Remove(ItemCount: 1000) 30.29 μs 4.43 μs 32.13 μs -5.7%
SwissSetBenchmark.SwissSet_Remove(ItemCount: 1000) 70.84 μs 4.55 μs 67.26 μs +5.3%
CelerityMultiMapBenchmark.Dictionary_Remove(ItemCount: 100000) 3.29 ms 278.44 μs 3.25 ms +1.2%
IntSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.75 ms 23.13 μs 1.73 ms +1.3%
CelerityMultiMapBenchmark.CelerityMultiMap_Remove(ItemCount: 100000) 2.59 ms 131.73 μs 2.49 ms +4.1%
IntSetBenchmark.IntSet_Remove(ItemCount: 100000) 1.37 ms 96.43 μs 1.35 ms +1.9%
SwissSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.90 ms 127.36 μs 1.72 ms +10.5% ⚠️
SwissSetBenchmark.SwissSet_Remove(ItemCount: 100000) 1.12 ms 36.97 μs 1.18 ms -4.9%
BitSetBenchmark.BitArray_Xor(ItemCount: 1024) 61.2 ns 2.0 ns 56.4 ns +8.4%
BitSetBenchmark.BitSet_Xor(ItemCount: 1024) 1.25 μs 5.9 ns 1.25 μs +0.1%
BitSetBenchmark.BitArray_Xor(ItemCount: 1000000) 44.09 μs 605.0 ns 45.15 μs -2.4%
BitSetBenchmark.BitSet_Xor(ItemCount: 1000000) 4.48 ms 7.70 μs 4.48 ms +0.1%
SmallSetBenchmark.HashSet_Add(ItemCount: 8) 171.0 ns 4.1 ns 179.9 ns -5.0%
SmallSetBenchmark.SmallSet_Add(ItemCount: 8) 57.5 ns 1.6 ns 57.5 ns -0.1%
SmallSetBenchmark.HashSet_Add(ItemCount: 64) 780.4 ns 31.5 ns 758.8 ns +2.8%
SmallSetBenchmark.SmallSet_Add(ItemCount: 64) 1.62 μs 42.6 ns 1.60 μs +1.0%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 1000) 12.68 μs 240.9 ns 12.52 μs +1.2%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 1000) 13.79 μs 471.9 ns 13.75 μs +0.3%
RobinHoodSetBenchmark.HashSet_Add(ItemCount: 100000) 5.05 ms 82.45 μs 5.10 ms -1.0%
RobinHoodSetBenchmark.RobinHoodSet_Add(ItemCount: 100000) 6.73 ms 127.92 μs 6.71 ms +0.3%
DisjointSetBenchmark.Dictionary_Components(ElementCount: 1000) 17.07 μs 271.2 ns 17.30 μs -1.3%
DisjointSetBenchmark.DisjointSet_Components(ElementCount: 1000) 15.89 μs 179.7 ns 15.62 μs +1.8%
DisjointSetBenchmark.Dictionary_Components(ElementCount: 100000) 4.50 ms 42.52 μs 4.41 ms +1.9%
DisjointSetBenchmark.DisjointSet_Components(ElementCount: 100000) 3.30 ms 67.11 μs 3.24 ms +1.7%
DisjointSetBenchmark.Dictionary_Connected(ElementCount: 1000) 9.52 μs 11.8 ns 9.52 μs +0.0%
DisjointSetBenchmark.DisjointSet_Connected(ElementCount: 1000) 13.02 μs 19.9 ns 13.04 μs -0.2%
DisjointSetBenchmark.Dictionary_Connected(ElementCount: 100000) 157.30 μs 394.8 ns 155.44 μs +1.2%
DisjointSetBenchmark.DisjointSet_Connected(ElementCount: 100000) 286.28 μs 3.39 μs 269.55 μs +6.2%
SmallSetBenchmark.HashSet_Contains(ItemCount: 8) 37.3 ns 0.0 ns 37.2 ns +0.4%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 8) 19.9 ns 0.4 ns 19.9 ns +0.3%
SmallSetBenchmark.HashSet_Contains(ItemCount: 64) 302.2 ns 0.4 ns 304.6 ns -0.8%
SmallSetBenchmark.SmallSet_Contains(ItemCount: 64) 931.6 ns 15.0 ns 930.4 ns +0.1%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 8.8 ns 4.73 μs +0.1%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 1000) 2.77 μs 32.4 ns 2.77 μs -0.0%
RobinHoodSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.52 ms 3.27 μs 1.51 ms +0.4%
RobinHoodSetBenchmark.RobinHoodSet_Contains(ItemCount: 100000) 765.28 μs 22.49 μs 786.80 μs -2.7%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.57 μs 3.8 ns 4.57 μs -0.0%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 1000) 2.70 μs 3.1 ns 2.71 μs -0.1%
RobinHoodSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.97 ms 10.30 μs 1.97 ms +0.1%
RobinHoodSetBenchmark.RobinHoodSet_ContainsMissing(ItemCount: 100000) 1.28 ms 1.55 μs 1.28 ms -0.1%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 8) 176.2 ns 5.2 ns 165.6 ns +6.4%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 8) 76.4 ns 1.1 ns 75.9 ns +0.6%
SmallDictionaryBenchmark.Dictionary_Insert(ItemCount: 64) 817.3 ns 11.5 ns 779.6 ns +4.8%
SmallDictionaryBenchmark.SmallDictionary_Insert(ItemCount: 64) 1.05 μs 13.7 ns 1.03 μs +2.2%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.19 μs 182.0 ns 13.29 μs -0.8%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.41 μs 224.2 ns 13.09 μs +2.4%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 1000) 8.63 μs 153.0 ns 8.65 μs -0.2%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 1000) 8.41 μs 136.6 ns 8.21 μs +2.4%
CelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.35 ms 81.11 μs 4.40 ms -1.0%
PooledCelerityDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.16 ms 73.66 μs 5.23 ms -1.2%
CelerityDictionaryBenchmark.CelerityDictionary_Insert(ItemCount: 100000) 5.15 ms 59.64 μs 5.10 ms +0.8%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Insert(ItemCount: 100000) 3.24 ms 22.60 μs 3.23 ms +0.3%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 8) 41.1 ns 3.3 ns 38.6 ns +6.4%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 8) 23.2 ns 0.4 ns 23.2 ns -0.0%
SmallDictionaryBenchmark.Dictionary_Lookup(ItemCount: 64) 306.3 ns 2.7 ns 297.2 ns +3.1%
SmallDictionaryBenchmark.SmallDictionary_Lookup(ItemCount: 64) 964.2 ns 10.6 ns 962.5 ns +0.2%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.84 μs 7.2 ns 4.72 μs +2.5%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.83 μs 1.9 ns 4.83 μs -0.1%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 1000) 2.15 μs 6.5 ns 2.15 μs +0.1%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 1000) 2.43 μs 43.5 ns 2.38 μs +2.0%
CelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.62 ms 35.08 μs 1.59 ms +1.7%
PooledCelerityDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.61 ms 3.18 μs 1.60 ms +0.4%
CelerityDictionaryBenchmark.CelerityDictionary_Lookup(ItemCount: 100000) 695.40 μs 9.62 μs 1.01 ms -31.1%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Lookup(ItemCount: 100000) 636.63 μs 8.64 μs 708.75 μs -10.2% ✅
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 8) 1.27 μs 134.9 ns 1.33 μs -4.3%
SmallSetBenchmark.HashSet_Remove(ItemCount: 8) 447.7 ns 132.7 ns 500.9 ns -10.6%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 8) 1.18 μs 99.4 ns 1.27 μs -6.5%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 8) 1.11 μs 106.8 ns 1.21 μs -8.9%
SmallDictionaryBenchmark.Dictionary_Remove(ItemCount: 64) 4.03 μs 131.7 ns 4.47 μs -9.7%
SmallSetBenchmark.HashSet_Remove(ItemCount: 64) 1.30 μs 240.3 ns 1.39 μs -6.6%
SmallDictionaryBenchmark.SmallDictionary_Remove(ItemCount: 64) 26.12 μs 3.81 μs 24.57 μs +6.3%
SmallSetBenchmark.SmallSet_Remove(ItemCount: 64) 22.22 μs 3.47 μs 25.39 μs -12.5%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 80.06 μs 3.58 μs 84.48 μs -5.2%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 77.68 μs 6.67 μs 78.33 μs -0.8%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 1000) 145.15 μs 6.51 μs 144.71 μs +0.3%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 1000) 145.55 μs 9.85 μs 143.72 μs +1.3%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 1000) 26.60 μs 2.08 μs 30.37 μs -12.4%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 1000) 133.69 μs 9.66 μs 134.91 μs -0.9%
CelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.99 ms 20.93 μs 1.98 ms +0.4%
PooledCelerityDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.99 ms 16.52 μs 1.99 ms +0.1%
CelerityDictionaryBenchmark.CelerityDictionary_Remove(ItemCount: 100000) 1.67 ms 15.83 μs 1.68 ms -0.7%
PooledCelerityDictionaryBenchmark.PooledCelerityDictionary_Remove(ItemCount: 100000) 1.69 ms 13.41 μs 1.78 ms -4.9%
RobinHoodSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 18.29 μs 1.72 ms -0.6%
RobinHoodSetBenchmark.RobinHoodSet_Remove(ItemCount: 100000) 1.48 ms 38.88 μs 1.49 ms -0.7%
DisjointSetBenchmark.Dictionary_Union(ElementCount: 1000) 93.40 μs 1.67 μs 93.87 μs -0.5%
DisjointSetBenchmark.DisjointSet_Union(ElementCount: 1000) 27.41 μs 143.6 ns 27.59 μs -0.7%
DisjointSetBenchmark.Dictionary_Union(ElementCount: 100000) 43.09 ms 1.13 ms 45.56 ms -5.4%
DisjointSetBenchmark.DisjointSet_Union(ElementCount: 100000) 7.75 ms 58.35 μs 7.88 ms -1.6%
EnumSetBenchmark.HashSet_Add 578.0 ns 11.1 ns 577.1 ns +0.2%
EnumSetBenchmark.EnumSet_Add 87.0 ns 0.3 ns 86.5 ns +0.6%
BloomFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.58 μs 219.3 ns 12.94 μs -2.8%
CeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 12.47 μs 92.5 ns 12.69 μs -1.8%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 1000) 12.38 μs 40.1 ns 12.41 μs -0.2%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 1000) 16.35 μs 20.2 ns 16.38 μs -0.1%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 1000) 9.17 μs 220.9 ns 9.21 μs -0.4%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 1000) 11.02 μs 39.4 ns 10.93 μs +0.8%
BloomFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.67 ms 145.38 μs 4.80 ms -2.8%
CeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 5.26 ms 125.97 μs 5.27 ms -0.3%
HashCachingSetBenchmark.HashSet_Add(ItemCount: 100000) 5.04 ms 53.43 μs 5.06 ms -0.4%
BloomFilterBenchmark.BloomFilter_Add(ItemCount: 100000) 1.26 ms 2.38 μs 1.24 ms +1.4%
CeleritySetBenchmark.CeleritySet_Add(ItemCount: 100000) 3.45 ms 12.65 μs 3.49 ms -1.4%
HashCachingSetBenchmark.HashCachingSet_Add(ItemCount: 100000) 5.54 ms 100.84 μs 5.63 ms -1.5%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 1000) 166.47 μs 595.3 ns 169.86 μs -2.0%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 1000) 3.41 ms 52.36 μs 3.41 ms -0.2%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Build(ItemCount: 100000) 29.32 ms 353.08 μs 29.46 ms -0.5%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Build(ItemCount: 100000) 1.64 s 206.03 ms 1.48 s +10.8%
EnumSetBenchmark.HashSet_Contains 170.4 ns 0.1 ns 171.1 ns -0.4%
EnumSetBenchmark.EnumSet_Contains 51.6 ns 0.1 ns 51.6 ns -0.1%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 4.7 ns 4.74 μs +0.1%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 5.01 μs 315.3 ns 4.72 μs +6.3%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 1000) 4.74 μs 10.7 ns 4.75 μs -0.1%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 1000) 14.18 μs 7.7 ns 14.17 μs +0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 1000) 1.91 μs 17.8 ns 1.92 μs -0.4%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 1000) 2.64 μs 12.9 ns 2.64 μs +0.1%
BloomFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.54 ms 28.80 μs 1.52 ms +1.5%
CeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.51 ms 7.40 μs 1.50 ms +0.4%
HashCachingSetBenchmark.HashSet_Contains(ItemCount: 100000) 1.51 ms 4.33 μs 1.58 ms -4.3%
BloomFilterBenchmark.BloomFilter_Contains(ItemCount: 100000) 981.57 μs 617.6 ns 981.40 μs +0.0%
CeleritySetBenchmark.CeleritySet_Contains(ItemCount: 100000) 550.47 μs 3.84 μs 549.41 μs +0.2%
HashCachingSetBenchmark.HashCachingSet_Contains(ItemCount: 100000) 739.87 μs 8.10 μs 741.27 μs -0.2%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.56 μs 4.1 ns 4.57 μs -0.1%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.56 μs 3.4 ns 4.69 μs -2.6%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 1000) 3.98 μs 2.1 ns 3.98 μs -0.1%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 1000) 2.79 μs 4.6 ns 2.79 μs +0.1%
BloomFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.98 ms 22.53 μs 1.98 ms -0.4%
HashCachingSetBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.99 ms 4.47 μs 1.97 ms +1.1%
BloomFilterBenchmark.BloomFilter_ContainsMissing(ItemCount: 100000) 1.67 ms 1.41 μs 1.67 ms -0.0%
HashCachingSetBenchmark.HashCachingSet_ContainsMissing(ItemCount: 100000) 1.26 ms 1.53 μs 1.26 ms -0.2%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.17 μs 91.2 ns 13.50 μs -2.4%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 13.06 μs 54.8 ns 13.08 μs -0.2%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 1000) 8.79 μs 238.5 ns 9.11 μs -3.5%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 1000) 16.56 μs 67.6 ns 16.70 μs -0.8%
IntDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.31 ms 66.07 μs 4.34 ms -0.6%
RobinHoodDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.03 ms 112.58 μs 5.00 ms +0.7%
IntDictionaryBenchmark.IntDictionary_Insert(ItemCount: 100000) 5.05 ms 42.10 μs 5.08 ms -0.7%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Insert(ItemCount: 100000) 8.45 ms 922.74 μs 8.26 ms +2.2%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 1000) 7.61 μs 4.0 ns 7.61 μs -0.0%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.60 μs 5.7 ns 4.61 μs -0.1%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.71 μs 120.9 ns 4.71 μs -0.0%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 1000) 81.04 μs 335.3 ns 81.70 μs -0.8%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 1000) 2.19 μs 120.5 ns 2.11 μs +3.7%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 1000) 2.91 μs 14.2 ns 2.90 μs +0.1%
FrozenCelerityDictionaryBenchmark.FrozenDictionary_Lookup(ItemCount: 100000) 1.85 ms 21.68 μs 1.88 ms -1.4%
IntDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.57 ms 3.94 μs 1.56 ms +0.1%
RobinHoodDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.66 ms 51.35 μs 1.61 ms +2.6%
FrozenCelerityDictionaryBenchmark.FrozenCelerityDictionary_Lookup(ItemCount: 100000) 8.33 ms 37.99 μs 8.41 ms -0.9%
IntDictionaryBenchmark.IntDictionary_Lookup(ItemCount: 100000) 725.87 μs 14.01 μs 703.04 μs +3.2%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Lookup(ItemCount: 100000) 1.16 ms 260.33 μs 913.61 μs +27.4%
EnumSetBenchmark.HashSet_Remove 2.36 μs 132.5 ns 2.32 μs +2.0%
EnumSetBenchmark.EnumSet_Remove 959.2 ns 67.9 ns 1.11 μs -13.7%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 28.92 μs 2.42 μs 30.46 μs -5.0%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 77.91 μs 7.26 μs 79.50 μs -2.0%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 76.23 μs 7.05 μs 77.88 μs -2.1%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 1000) 141.42 μs 7.59 μs 146.85 μs -3.7%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 1000) 87.74 μs 7.75 μs 89.83 μs -2.3%
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 1000) 136.03 μs 4.67 μs 132.77 μs +2.5%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 1000) 26.41 μs 1.85 μs 30.70 μs -14.0%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 1000) 106.93 μs 8.68 μs 106.67 μs +0.2%
CeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.68 ms 24.63 μs 1.68 ms -0.2%
IntDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.00 ms 20.22 μs 2.01 ms -0.7%
RobinHoodDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 1.99 ms 13.10 μs 2.00 ms -0.5%
CeleritySetBenchmark.CeleritySet_Remove(ItemCount: 100000) 1.42 ms 67.32 μs 1.40 ms +1.9%
IntDictionaryBenchmark.IntDictionary_Remove(ItemCount: 100000) 2.86 ms 2.08 ms 6.34 ms -54.9% ✅
RobinHoodDictionaryBenchmark.RobinHoodDictionary_Remove(ItemCount: 100000) 1.80 ms 24.41 μs 1.83 ms -1.5%
HashCachingSetBenchmark.HashSet_Remove(ItemCount: 100000) 1.71 ms 23.61 μs 1.73 ms -1.2%
HashCachingSetBenchmark.HashCachingSet_Remove(ItemCount: 100000) 1.66 ms 45.68 μs 1.68 ms -1.4%
EnumSetBenchmark.HashSet_Union 402.3 ns 4.5 ns 423.2 ns -4.9%
EnumSetBenchmark.EnumSet_Union 24.1 ns 1.3 ns 33.5 ns -27.9%
EnumMapBenchmark.Dictionary_Add 653.0 ns 4.6 ns 633.4 ns +3.1%
EnumMapBenchmark.EnumMap_Add 156.5 ns 0.7 ns 156.2 ns +0.2%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 1000) 12.80 μs 112.4 ns 16.66 μs -23.2%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 1000) 13.25 μs 258.2 ns 13.09 μs +1.2%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 1000) 13.15 μs 119.7 ns 13.29 μs -1.0%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 1000) 7.30 μs 20.3 ns 7.25 μs +0.7%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 1000) 27.39 μs 82.8 ns 27.41 μs -0.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 1000) 9.00 μs 62.1 ns 8.91 μs +1.0%
CuckooFilterBenchmark.HashSet_Add(ItemCount: 100000) 4.75 ms 66.44 μs 4.79 ms -0.9%
HyperLogLogBenchmark.HashSet_Add(ItemCount: 100000) 4.90 ms 54.34 μs 4.90 ms -0.1%
PooledCeleritySetBenchmark.HashSet_Add(ItemCount: 100000) 4.86 ms 138.58 μs 4.86 ms +0.0%
CuckooFilterBenchmark.CuckooFilter_Add(ItemCount: 100000) 2.09 ms 6.78 μs 2.11 ms -1.0%
HyperLogLogBenchmark.HyperLogLog_Add(ItemCount: 100000) 575.49 μs 1.19 μs 575.53 μs -0.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Add(ItemCount: 100000) 2.88 ms 8.82 μs 2.85 ms +1.0%
XorFilterBenchmark.HashSet_Build(ItemCount: 1000) 8.13 μs 56.7 ns 8.12 μs +0.0%
XorFilterBenchmark.XorFilter_Build(ItemCount: 1000) 39.96 μs 568.8 ns 40.51 μs -1.3%
XorFilterBenchmark.HashSet_Build(ItemCount: 100000) 2.11 ms 38.39 μs 2.12 ms -0.2%
XorFilterBenchmark.XorFilter_Build(ItemCount: 100000) 13.03 ms 255.50 μs 12.95 ms +0.6%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.73 μs 20.4 ns 4.81 μs -1.7%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 1000) 4.80 μs 56.7 ns 4.75 μs +1.1%
XorFilterBenchmark.HashSet_Contains(ItemCount: 1000) 4.70 μs 19.4 ns 4.74 μs -0.8%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 1000) 4.91 μs 5.5 ns 4.91 μs +0.0%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 1000) 1.93 μs 16.5 ns 1.93 μs -0.1%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 1000) 6.77 μs 16.4 ns 6.77 μs -0.0%
CuckooFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.59 ms 12.47 μs 1.59 ms +0.2%
PooledCeleritySetBenchmark.HashSet_Contains(ItemCount: 100000) 1.58 ms 14.57 μs 1.57 ms +0.9%
XorFilterBenchmark.HashSet_Contains(ItemCount: 100000) 1.59 ms 16.30 μs 1.58 ms +1.0%
CuckooFilterBenchmark.CuckooFilter_Contains(ItemCount: 100000) 1.74 ms 1.52 μs 1.75 ms -0.1%
PooledCeleritySetBenchmark.PooledCeleritySet_Contains(ItemCount: 100000) 577.40 μs 1.21 μs 579.86 μs -0.4%
XorFilterBenchmark.XorFilter_Contains(ItemCount: 100000) 704.54 μs 1.02 μs 704.08 μs +0.1%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.55 μs 11.1 ns 4.57 μs -0.4%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 1000) 4.54 μs 7.8 ns 4.54 μs +0.2%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 1000) 8.37 μs 6.6 ns 8.37 μs -0.0%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 1000) 6.77 μs 6.4 ns 6.78 μs -0.1%
CuckooFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.94 ms 25.93 μs 1.94 ms +0.1%
XorFilterBenchmark.HashSet_ContainsMissing(ItemCount: 100000) 1.96 ms 4.92 μs 1.85 ms +5.9%
CuckooFilterBenchmark.CuckooFilter_ContainsMissing(ItemCount: 100000) 928.20 μs 1.46 μs 934.07 μs -0.6%
XorFilterBenchmark.XorFilter_ContainsMissing(ItemCount: 100000) 705.88 μs 760.7 ns 705.30 μs +0.1%
EnumMapBenchmark.Dictionary_Enumerate 50.5 ns 0.0 ns 50.6 ns -0.1%
EnumMapBenchmark.EnumMap_Enumerate 41.5 ns 1.8 ns 39.8 ns +4.2%
HyperLogLogBenchmark.HashSet_Estimate(ItemCount: 1000) 0.0 ns 0.0 ns 0.0 ns -2.6%
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 -62.1%
HyperLogLogBenchmark.HyperLogLog_Estimate(ItemCount: 100000) 22.98 μs 5.7 ns 22.97 μs +0.0%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 16.27 μs 108.7 ns 16.39 μs -0.8%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 1000) 14.34 μs 245.6 ns 14.07 μs +1.9%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 1000) 12.23 μs 88.9 ns 12.39 μs -1.3%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 1000) 30.61 μs 188.3 ns 30.61 μs -0.0%
LongDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 5.09 ms 42.24 μs 5.18 ms -1.6%
SwissDictionaryBenchmark.Dictionary_Insert(ItemCount: 100000) 4.79 ms 224.68 μs 4.72 ms +1.5%
LongDictionaryBenchmark.LongDictionary_Insert(ItemCount: 100000) 6.79 ms 62.55 μs 7.08 ms -4.0%
SwissDictionaryBenchmark.SwissDictionary_Insert(ItemCount: 100000) 3.97 ms 22.48 μs 3.96 ms +0.4%
EnumMapBenchmark.Dictionary_Lookup 117.7 ns 0.1 ns 117.7 ns +0.0%
EnumMapBenchmark.EnumMap_Lookup 63.0 ns 0.0 ns 63.8 ns -1.3%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.92 μs 45.9 ns 4.89 μs +0.6%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 1000) 4.74 μs 11.2 ns 4.72 μs +0.3%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 1000) 5.82 μs 3.74 μs 2.27 μs +156.7%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 1000) 2.98 μs 20.5 ns 3.01 μs -1.0%
LongDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.57 ms 14.04 μs 1.61 ms -2.7%
SwissDictionaryBenchmark.Dictionary_Lookup(ItemCount: 100000) 1.62 ms 5.67 μs 1.57 ms +3.7%
LongDictionaryBenchmark.LongDictionary_Lookup(ItemCount: 100000) 711.50 μs 912.7 ns 710.25 μs +0.2%
SwissDictionaryBenchmark.SwissDictionary_Lookup(ItemCount: 100000) 807.85 μs 24.49 μs 823.40 μs -1.9%
EnumMapBenchmark.Dictionary_Remove 3.51 μs 440.0 ns 3.27 μs +7.3%
EnumMapBenchmark.EnumMap_Remove 2.02 μs 385.8 ns 1.64 μs +22.9%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 91.49 μs 5.87 μs 86.73 μs +5.5%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 1000) 32.15 μs 4.56 μs 33.30 μs -3.5%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 1000) 82.42 μs 8.11 μs 85.96 μs -4.1%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 1000) 94.66 μs 6.53 μs 90.49 μs +4.6%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 1000) 140.00 μs 7.79 μs 138.06 μs +1.4%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 1000) 73.49 μs 2.84 μs 83.72 μs -12.2% ✅
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 1000) 13.38 μs 36.6 ns 13.32 μs +0.5%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 1000) 13.10 μs 126.4 ns 12.92 μs +1.4%
LongDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.03 ms 26.23 μs 2.12 ms -4.1%
PooledCeleritySetBenchmark.HashSet_Remove(ItemCount: 100000) 1.76 ms 18.63 μs 1.76 ms +0.3%
SwissDictionaryBenchmark.Dictionary_Remove(ItemCount: 100000) 2.09 ms 27.36 μs 2.11 ms -0.7%
LongDictionaryBenchmark.LongDictionary_Remove(ItemCount: 100000) 1.95 ms 295.08 μs 1.75 ms +11.8%
PooledCeleritySetBenchmark.PooledCeleritySet_Remove(ItemCount: 100000) 1.27 ms 49.41 μs 1.27 ms -0.5%
SwissDictionaryBenchmark.SwissDictionary_Remove(ItemCount: 100000) 1.82 ms 101.85 μs 1.84 ms -0.6%
CuckooFilterBenchmark.HashSet_Remove(ItemCount: 100000) 3.91 ms 32.62 μs 3.91 ms -0.2%
CuckooFilterBenchmark.CuckooFilter_Remove(ItemCount: 100000) 4.00 ms 9.82 μs 4.03 ms -0.8%
Hashers (100)
Benchmark This PR StdDev main Δ
StringHasherBenchmark.Bcl_GetHashCode(Shape: ShortAscii) 15.39 μs 29.4 ns 15.42 μs -0.2%
StringHasherBenchmark.EqualityComparer_Default(Shape: ShortAscii) 15.38 μs 36.4 ns 15.42 μs -0.2%
StringHasherBenchmark.Djb2(Shape: ShortAscii) 22.03 μs 39.6 ns 22.06 μs -0.1%
StringHasherBenchmark.Djb2A(Shape: ShortAscii) 22.03 μs 32.1 ns 22.04 μs -0.1%
StringHasherBenchmark.Sdbm(Shape: ShortAscii) 32.87 μs 49.2 ns 32.83 μs +0.1%
StringHasherBenchmark.Elf(Shape: ShortAscii) 43.86 μs 259.8 ns 43.97 μs -0.3%
StringHasherBenchmark.Crc32(Shape: ShortAscii) 49.94 μs 82.5 ns 49.88 μs +0.1%
StringHasherBenchmark.Adler32(Shape: ShortAscii) 96.32 μs 63.1 ns 96.37 μs -0.1%
StringHasherBenchmark.FnV1(Shape: ShortAscii) 25.33 μs 13.5 ns 25.35 μs -0.1%
StringHasherBenchmark.FnV1_64(Shape: ShortAscii) 25.48 μs 39.6 ns 25.47 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: ShortAscii) 10.64 μs 32.1 ns 10.63 μs +0.1%
StringHasherBenchmark.FnV1A_Full(Shape: ShortAscii) 22.85 μs 34.3 ns 22.85 μs -0.0%
StringHasherBenchmark.FnV1A_64(Shape: ShortAscii) 25.71 μs 41.4 ns 25.72 μs -0.1%
StringHasherBenchmark.JenkinsOaat(Shape: ShortAscii) 39.30 μs 67.1 ns 39.33 μs -0.1%
StringHasherBenchmark.Murmur2(Shape: ShortAscii) 15.27 μs 60.3 ns 15.18 μs +0.6%
StringHasherBenchmark.Murmur3(Shape: ShortAscii) 17.32 μs 23.3 ns 17.35 μs -0.2%
StringHasherBenchmark.XxHash32(Shape: ShortAscii) 16.91 μs 6.9 ns 16.92 μs -0.1%
StringHasherBenchmark.XxHash64(Shape: ShortAscii) 18.06 μs 34.2 ns 18.07 μs -0.1%
StringHasherBenchmark.XxHash3(Shape: ShortAscii) 14.93 μs 14.2 ns 14.99 μs -0.4%
StringHasherBenchmark.CityHash64(Shape: ShortAscii) 15.25 μs 9.9 ns 15.25 μs -0.0%
StringHasherBenchmark.MetroHash64(Shape: ShortAscii) 15.00 μs 16.3 ns 15.02 μs -0.1%
StringHasherBenchmark.SipHash13(Shape: ShortAscii) 27.37 μs 20.4 ns 27.40 μs -0.1%
StringHasherBenchmark.SipHash24(Shape: ShortAscii) 38.50 μs 51.9 ns 38.46 μs +0.1%
StringHasherBenchmark.HalfSipHash24(Shape: ShortAscii) 49.99 μs 70.1 ns 50.02 μs -0.1%
StringHasherBenchmark.HighwayHash64(Shape: ShortAscii) 480.63 μs 227.4 ns 480.29 μs +0.1%
StringHasherBenchmark.Bcl_GetHashCode(Shape: LongAscii) 96.93 μs 83.7 ns 97.03 μs -0.1%
StringHasherBenchmark.EqualityComparer_Default(Shape: LongAscii) 96.64 μs 134.3 ns 96.79 μs -0.2%
StringHasherBenchmark.Djb2(Shape: LongAscii) 229.55 μs 160.2 ns 229.43 μs +0.1%
StringHasherBenchmark.Djb2A(Shape: LongAscii) 229.49 μs 238.5 ns 229.47 μs +0.0%
StringHasherBenchmark.Sdbm(Shape: LongAscii) 308.30 μs 289.9 ns 308.49 μs -0.1%
StringHasherBenchmark.Elf(Shape: LongAscii) 577.36 μs 359.7 ns 578.43 μs -0.2%
StringHasherBenchmark.Crc32(Shape: LongAscii) 590.00 μs 555.1 ns 590.11 μs -0.0%
StringHasherBenchmark.Adler32(Shape: LongAscii) 788.77 μs 198.3 ns 788.70 μs +0.0%
StringHasherBenchmark.FnV1(Shape: LongAscii) 289.54 μs 115.8 ns 289.98 μs -0.2%
StringHasherBenchmark.FnV1_64(Shape: LongAscii) 284.39 μs 88.0 ns 284.42 μs -0.0%
StringHasherBenchmark.FnV1A(Shape: LongAscii) 122.26 μs 35.7 ns 122.47 μs -0.2%
StringHasherBenchmark.FnV1A_Full(Shape: LongAscii) 281.82 μs 153.6 ns 282.10 μs -0.1%
StringHasherBenchmark.FnV1A_64(Shape: LongAscii) 286.75 μs 78.2 ns 287.29 μs -0.2%
StringHasherBenchmark.JenkinsOaat(Shape: LongAscii) 378.54 μs 179.5 ns 378.72 μs -0.0%
StringHasherBenchmark.Murmur2(Shape: LongAscii) 102.00 μs 135.1 ns 102.03 μs -0.0%
StringHasherBenchmark.Murmur3(Shape: LongAscii) 113.02 μs 123.1 ns 113.02 μs +0.0%
StringHasherBenchmark.XxHash32(Shape: LongAscii) 73.28 μs 134.1 ns 73.21 μs +0.1%
StringHasherBenchmark.XxHash64(Shape: LongAscii) 91.03 μs 898.0 ns 91.09 μs -0.1%
StringHasherBenchmark.XxHash3(Shape: LongAscii) 70.10 μs 87.0 ns 70.50 μs -0.6%
StringHasherBenchmark.CityHash64(Shape: LongAscii) 123.26 μs 1.16 μs 122.80 μs +0.4%
StringHasherBenchmark.MetroHash64(Shape: LongAscii) 78.30 μs 2.27 μs 78.27 μs +0.0%
StringHasherBenchmark.SipHash13(Shape: LongAscii) 114.60 μs 75.9 ns 114.88 μs -0.2%
StringHasherBenchmark.SipHash24(Shape: LongAscii) 161.87 μs 422.1 ns 161.87 μs +0.0%
StringHasherBenchmark.HalfSipHash24(Shape: LongAscii) 248.20 μs 280.2 ns 248.03 μs +0.1%
StringHasherBenchmark.HighwayHash64(Shape: LongAscii) 831.96 μs 5.48 μs 836.50 μs -0.5%
StringHasherBenchmark.Bcl_GetHashCode(Shape: NonAscii) 22.89 μs 31.8 ns 22.89 μs +0.0%
StringHasherBenchmark.EqualityComparer_Default(Shape: NonAscii) 22.85 μs 12.9 ns 22.88 μs -0.1%
StringHasherBenchmark.Djb2(Shape: NonAscii) 43.52 μs 37.8 ns 43.49 μs +0.1%
StringHasherBenchmark.Djb2A(Shape: NonAscii) 43.46 μs 31.2 ns 43.51 μs -0.1%
StringHasherBenchmark.Sdbm(Shape: NonAscii) 61.61 μs 85.7 ns 61.55 μs +0.1%
StringHasherBenchmark.Elf(Shape: NonAscii) 99.55 μs 346.2 ns 99.51 μs +0.0%
StringHasherBenchmark.Crc32(Shape: NonAscii) 102.64 μs 71.4 ns 102.75 μs -0.1%
StringHasherBenchmark.Adler32(Shape: NonAscii) 175.49 μs 138.9 ns 175.66 μs -0.1%
StringHasherBenchmark.FnV1(Shape: NonAscii) 47.64 μs 20.2 ns 47.71 μs -0.1%
StringHasherBenchmark.FnV1_64(Shape: NonAscii) 50.01 μs 56.9 ns 49.99 μs +0.0%
StringHasherBenchmark.FnV1A(Shape: NonAscii) 21.65 μs 40.8 ns 21.65 μs +0.0%
StringHasherBenchmark.FnV1A_Full(Shape: NonAscii) 45.09 μs 58.5 ns 45.09 μs -0.0%
StringHasherBenchmark.FnV1A_64(Shape: NonAscii) 49.59 μs 46.8 ns 49.61 μs -0.0%
StringHasherBenchmark.JenkinsOaat(Shape: NonAscii) 73.19 μs 89.3 ns 73.14 μs +0.1%
StringHasherBenchmark.Murmur2(Shape: NonAscii) 27.32 μs 148.4 ns 27.26 μs +0.2%
StringHasherBenchmark.Murmur3(Shape: NonAscii) 31.87 μs 70.5 ns 31.89 μs -0.0%
StringHasherBenchmark.XxHash32(Shape: NonAscii) 23.91 μs 11.0 ns 23.91 μs -0.0%
StringHasherBenchmark.XxHash64(Shape: NonAscii) 29.16 μs 35.1 ns 29.12 μs +0.1%
StringHasherBenchmark.XxHash3(Shape: NonAscii) 22.91 μs 21.0 ns 22.90 μs +0.0%
StringHasherBenchmark.CityHash64(Shape: NonAscii) 22.06 μs 38.4 ns 22.04 μs +0.1%
StringHasherBenchmark.MetroHash64(Shape: NonAscii) 25.69 μs 22.8 ns 25.66 μs +0.1%
StringHasherBenchmark.SipHash13(Shape: NonAscii) 36.89 μs 89.1 ns 36.92 μs -0.1%
StringHasherBenchmark.SipHash24(Shape: NonAscii) 51.87 μs 571.6 ns 51.78 μs +0.2%
StringHasherBenchmark.HalfSipHash24(Shape: NonAscii) 73.23 μs 469.6 ns 73.22 μs +0.0%
StringHasherBenchmark.HighwayHash64(Shape: NonAscii) 514.56 μs 4.82 μs 512.97 μs +0.3%
IntegerHasherBenchmark.Guid_Bcl 1.28 μs 6.5 ns 1.30 μs -1.5%
IntegerHasherBenchmark.Guid_EqualityComparer 3.47 μs 1.9 ns 3.47 μs -0.1%
IntegerHasherBenchmark.Guid_Celerity 8.04 μs 7.4 ns 8.05 μs -0.1%
IntegerHasherBenchmark.Int32_Bcl 707.4 ns 1.7 ns 707.5 ns -0.0%
IntegerHasherBenchmark.Int32_EqualityComparer 714.0 ns 2.9 ns 713.3 ns +0.1%
IntegerHasherBenchmark.Int32_Identity 706.4 ns 1.8 ns 705.9 ns +0.1%
IntegerHasherBenchmark.Int32_WangNaive 1.25 μs 1.6 ns 1.25 μs +0.1%
IntegerHasherBenchmark.Int32_Wang 3.03 μs 1.4 ns 3.03 μs -0.0%
IntegerHasherBenchmark.Int32_Murmur3 2.65 μs 6.7 ns 2.65 μs +0.2%
IntegerHasherBenchmark.Int64_Bcl 1.27 μs 1.3 ns 1.27 μs +0.0%
IntegerHasherBenchmark.Int64_EqualityComparer 1.25 μs 0.7 ns 1.25 μs +0.0%
IntegerHasherBenchmark.Int64_Identity 706.9 ns 3.8 ns 706.2 ns +0.1%
IntegerHasherBenchmark.Int64_WangNaive 1.87 μs 0.7 ns 1.87 μs -0.1%
IntegerHasherBenchmark.Int64_Wang 4.16 μs 5.7 ns 4.16 μs +0.0%
IntegerHasherBenchmark.Int64_Murmur3 2.37 μs 1.5 ns 2.37 μs -0.1%
IntegerHasherBenchmark.UInt32_Bcl 708.0 ns 2.5 ns 707.6 ns +0.1%
IntegerHasherBenchmark.UInt32_EqualityComparer 710.4 ns 3.7 ns 713.1 ns -0.4%
IntegerHasherBenchmark.UInt32_Default 1.25 μs 1.3 ns 1.25 μs -0.0%
IntegerHasherBenchmark.UInt32_Wang 3.02 μs 7.5 ns 3.03 μs -0.3%
IntegerHasherBenchmark.UInt32_Murmur3 2.65 μs 1.8 ns 2.65 μs -0.0%
IntegerHasherBenchmark.UInt64_Bcl 1.27 μs 1.0 ns 1.27 μs +0.0%
IntegerHasherBenchmark.UInt64_EqualityComparer 1.25 μs 0.8 ns 1.25 μs +0.0%
IntegerHasherBenchmark.UInt64_Default 2.37 μs 1.7 ns 2.37 μs -0.1%
IntegerHasherBenchmark.UInt64_Wang 4.16 μs 2.3 ns 4.16 μs +0.0%
IntegerHasherBenchmark.UInt64_WangNaive 1.87 μs 1.7 ns 1.87 μs +0.1%

Same-runner A/B (sharded 6-way): main (151d60e) 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 deleted the claude/github-issue-254-c3520c branch July 24, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

StringFnV1AFullHasher doc misquotes StringFnV1AHasher's remarks

2 participants