Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hashing

This repository includes implementations based on the following sources:


Benchmarks net10.0

hash_perf_n10_barchart.png hash_perf_n10_heatmap.png hash_perf_n10_linechart.png hash_perf_n10_speedup.png hash_perf_n10_throughput.png


Benchmarks netstandard2.1

hash_perf_ns21_barchart.png hash_perf_ns21_heatmap.png hash_perf_ns21_linechart.png hash_perf_ns21_speedup.png hash_perf_ns21_throughput.png


Benchmarks net10.0

BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.9168/25H2/2025Update/HudsonValley2) AMD Ryzen 7 5800H with Radeon Graphics 3.20GHz, 1 CPU, 16 logical and 8 physical cores .NET SDK 10.0.300 [Host] : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3 DefaultJob : .NET 10.0.8 (10.0.8, 10.0.826.23019), X64 RyuJIT x86-64-v3

Method Size Mean Error StdDev Median Ratio RatioSD
StdXxHash64 4 5.242 ns 0.1307 ns 0.1996 ns 5.191 ns 1.00 0.05
RustXxHash64 4 2.003 ns 0.0699 ns 0.1148 ns 1.978 ns 0.38 0.03
StdXxHash32 4 2.733 ns 0.0581 ns 0.0515 ns 2.735 ns 0.52 0.02
RustXxHash32 4 1.547 ns 0.0518 ns 0.0459 ns 1.550 ns 0.30 0.01
StdXxHash3 4 1.771 ns 0.0267 ns 0.0250 ns 1.760 ns 0.34 0.01
RustSipHash24 4 7.391 ns 0.0205 ns 0.0171 ns 7.386 ns 1.41 0.05
RustSipHash13 4 5.613 ns 0.0726 ns 0.0644 ns 5.589 ns 1.07 0.04
StdMarvinHash32 4 2.427 ns 0.0169 ns 0.0150 ns 2.423 ns 0.46 0.02
RustRapidHashV3 4 2.095 ns 0.0427 ns 0.0357 ns 2.105 ns 0.40 0.02
RustFoldHash64 4 1.510 ns 0.0243 ns 0.0227 ns 1.513 ns 0.29 0.01
StdXxHash64 8 4.945 ns 0.0982 ns 0.0919 ns 4.958 ns 1.00 0.03
RustXxHash64 8 2.407 ns 0.0747 ns 0.0830 ns 2.387 ns 0.49 0.02
StdXxHash32 8 3.459 ns 0.0503 ns 0.0446 ns 3.449 ns 0.70 0.02
RustXxHash32 8 2.250 ns 0.0715 ns 0.0735 ns 2.238 ns 0.46 0.02
StdXxHash3 8 1.796 ns 0.0269 ns 0.0252 ns 1.799 ns 0.36 0.01
RustSipHash24 8 10.490 ns 0.0733 ns 0.0649 ns 10.467 ns 2.12 0.04
RustSipHash13 8 6.577 ns 0.0247 ns 0.0231 ns 6.568 ns 1.33 0.02
StdMarvinHash32 8 3.153 ns 0.0194 ns 0.0162 ns 3.157 ns 0.64 0.01
RustRapidHashV3 8 2.099 ns 0.0349 ns 0.0310 ns 2.098 ns 0.42 0.01
RustFoldHash64 8 1.390 ns 0.0401 ns 0.0375 ns 1.390 ns 0.28 0.01
StdXxHash64 16 6.075 ns 0.0542 ns 0.0480 ns 6.063 ns 1.00 0.01
RustXxHash64 16 3.497 ns 0.0421 ns 0.0394 ns 3.492 ns 0.58 0.01
StdXxHash32 16 3.959 ns 0.0225 ns 0.0199 ns 3.961 ns 0.65 0.01
RustXxHash32 16 4.051 ns 0.0293 ns 0.0274 ns 4.057 ns 0.67 0.01
StdXxHash3 16 1.685 ns 0.0566 ns 0.0529 ns 1.687 ns 0.28 0.01
RustSipHash24 16 12.789 ns 0.0757 ns 0.0708 ns 12.795 ns 2.11 0.02
RustSipHash13 16 8.118 ns 0.0289 ns 0.0270 ns 8.115 ns 1.34 0.01
StdMarvinHash32 16 4.779 ns 0.0142 ns 0.0133 ns 4.779 ns 0.79 0.01
RustRapidHashV3 16 2.071 ns 0.0337 ns 0.0299 ns 2.080 ns 0.34 0.01
RustFoldHash64 16 1.378 ns 0.0216 ns 0.0181 ns 1.371 ns 0.23 0.00
StdXxHash64 32 9.729 ns 0.0485 ns 0.0454 ns 9.732 ns 1.00 0.01
RustXxHash64 32 8.144 ns 0.0503 ns 0.0470 ns 8.132 ns 0.84 0.01
StdXxHash32 32 5.789 ns 0.0276 ns 0.0259 ns 5.791 ns 0.59 0.00
RustXxHash32 32 5.795 ns 0.0324 ns 0.0303 ns 5.782 ns 0.60 0.00
StdXxHash3 32 3.692 ns 0.0561 ns 0.0497 ns 3.692 ns 0.38 0.01
RustSipHash24 32 18.505 ns 0.0570 ns 0.0505 ns 18.506 ns 1.90 0.01
RustSipHash13 32 11.278 ns 0.0465 ns 0.0435 ns 11.284 ns 1.16 0.01
StdMarvinHash32 32 9.049 ns 0.0624 ns 0.0553 ns 9.059 ns 0.93 0.01
RustRapidHashV3 32 7.777 ns 0.0565 ns 0.0501 ns 7.772 ns 0.80 0.01
RustFoldHash64 32 5.971 ns 0.0952 ns 0.0844 ns 5.948 ns 0.61 0.01
StdXxHash64 64 12.715 ns 0.0521 ns 0.0462 ns 12.721 ns 1.00 0.00
RustXxHash64 64 10.982 ns 0.0945 ns 0.0789 ns 10.950 ns 0.86 0.01
StdXxHash32 64 10.314 ns 0.1192 ns 0.1057 ns 10.330 ns 0.81 0.01
RustXxHash32 64 9.620 ns 0.0361 ns 0.0337 ns 9.623 ns 0.76 0.00
StdXxHash3 64 5.367 ns 0.0716 ns 0.0670 ns 5.351 ns 0.42 0.01
RustSipHash24 64 29.577 ns 0.0901 ns 0.0799 ns 29.564 ns 2.33 0.01
RustSipHash13 64 17.122 ns 0.0761 ns 0.0712 ns 17.130 ns 1.35 0.01
StdMarvinHash32 64 18.989 ns 0.0443 ns 0.0393 ns 19.005 ns 1.49 0.01
RustRapidHashV3 64 9.132 ns 0.2127 ns 0.2089 ns 9.217 ns 0.72 0.02
RustFoldHash64 64 7.827 ns 0.1027 ns 0.0960 ns 7.827 ns 0.62 0.01
StdXxHash64 128 16.715 ns 0.1300 ns 0.1153 ns 16.694 ns 1.00 0.01
RustXxHash64 128 16.994 ns 0.0872 ns 0.0816 ns 17.001 ns 1.02 0.01
StdXxHash32 128 17.776 ns 0.0604 ns 0.0536 ns 17.766 ns 1.06 0.01
RustXxHash32 128 18.715 ns 0.4334 ns 1.2365 ns 18.129 ns 1.12 0.07
StdXxHash3 128 9.458 ns 0.0991 ns 0.0927 ns 9.465 ns 0.57 0.01
RustSipHash24 128 51.843 ns 0.1841 ns 0.1722 ns 51.859 ns 3.10 0.02
RustSipHash13 128 29.578 ns 0.1174 ns 0.1041 ns 29.560 ns 1.77 0.01
StdMarvinHash32 128 39.595 ns 0.3505 ns 0.3279 ns 39.504 ns 2.37 0.02
RustRapidHashV3 128 11.020 ns 0.2471 ns 0.3213 ns 10.955 ns 0.66 0.02
RustFoldHash64 128 10.019 ns 0.2241 ns 0.2398 ns 9.902 ns 0.60 0.01
StdXxHash64 256 25.504 ns 0.1740 ns 0.1543 ns 25.488 ns 1.00 0.01
RustXxHash64 256 28.600 ns 0.1724 ns 0.1528 ns 28.587 ns 1.12 0.01
StdXxHash32 256 34.206 ns 0.1839 ns 0.1630 ns 34.234 ns 1.34 0.01
RustXxHash32 256 34.212 ns 0.1284 ns 0.1201 ns 34.237 ns 1.34 0.01
StdXxHash3 256 26.353 ns 0.5503 ns 0.6117 ns 26.204 ns 1.03 0.02
RustSipHash24 256 96.619 ns 0.3966 ns 0.3710 ns 96.498 ns 3.79 0.03
RustSipHash13 256 55.235 ns 0.3837 ns 0.3204 ns 55.218 ns 2.17 0.02
StdMarvinHash32 256 80.121 ns 0.2637 ns 0.2059 ns 80.159 ns 3.14 0.02
RustRapidHashV3 256 15.959 ns 0.2054 ns 0.1922 ns 16.006 ns 0.63 0.01
RustFoldHash64 256 15.365 ns 0.1956 ns 0.1633 ns 15.323 ns 0.60 0.01
StdXxHash64 512 42.658 ns 0.3765 ns 0.3338 ns 42.667 ns 1.00 0.01
RustXxHash64 512 53.391 ns 0.4039 ns 0.3778 ns 53.258 ns 1.25 0.01
StdXxHash32 512 67.783 ns 1.3580 ns 1.2703 ns 67.186 ns 1.59 0.03
RustXxHash32 512 68.079 ns 1.3248 ns 1.8134 ns 67.363 ns 1.60 0.04
StdXxHash3 512 27.736 ns 0.5179 ns 0.6550 ns 27.744 ns 0.65 0.02
RustSipHash24 512 187.760 ns 1.8449 ns 1.5406 ns 187.473 ns 4.40 0.05
RustSipHash13 512 104.607 ns 1.3751 ns 1.2863 ns 104.402 ns 2.45 0.03
StdMarvinHash32 512 161.601 ns 0.6853 ns 0.6410 ns 161.628 ns 3.79 0.03
RustRapidHashV3 512 27.949 ns 0.5939 ns 1.2526 ns 27.639 ns 0.66 0.03
RustFoldHash64 512 29.315 ns 0.5714 ns 0.5345 ns 29.242 ns 0.69 0.01
StdXxHash64 1024 79.034 ns 1.5671 ns 1.5391 ns 78.419 ns 1.00 0.03
RustXxHash64 1024 102.332 ns 0.3976 ns 0.3525 ns 102.329 ns 1.30 0.02
StdXxHash32 1024 133.481 ns 0.7729 ns 0.6454 ns 133.491 ns 1.69 0.03
RustXxHash32 1024 134.456 ns 2.1629 ns 2.0232 ns 134.199 ns 1.70 0.04
StdXxHash3 1024 40.876 ns 0.7747 ns 0.9222 ns 40.632 ns 0.52 0.01
RustSipHash24 1024 376.087 ns 4.4737 ns 4.1847 ns 375.236 ns 4.76 0.10
RustSipHash13 1024 204.750 ns 0.9803 ns 0.9170 ns 204.579 ns 2.59 0.05
StdMarvinHash32 1024 333.267 ns 4.3506 ns 3.8567 ns 332.794 ns 4.22 0.09
RustRapidHashV3 1024 50.849 ns 0.7158 ns 0.6696 ns 50.653 ns 0.64 0.01
RustFoldHash64 1024 51.635 ns 0.8319 ns 0.6495 ns 51.765 ns 0.65 0.01

Benchmarks netstandard2.1

Method Size Mean Error StdDev Median Ratio RatioSD
StdXxHash64 4 4.903 ns 0.1088 ns 0.1018 ns 4.875 ns 1.00 0.03
RustXxHash64 4 2.206 ns 0.0706 ns 0.1377 ns 2.181 ns 0.45 0.03
StdXxHash32 4 3.024 ns 0.0843 ns 0.0789 ns 3.004 ns 0.62 0.02
RustXxHash32 4 1.629 ns 0.0374 ns 0.0312 ns 1.646 ns 0.33 0.01
StdXxHash3 4 2.089 ns 0.0334 ns 0.0312 ns 2.090 ns 0.43 0.01
RustSipHash24 4 7.819 ns 0.1848 ns 0.2128 ns 7.773 ns 1.60 0.05
RustSipHash13 4 5.803 ns 0.0757 ns 0.0671 ns 5.804 ns 1.18 0.03
StdMarvinHash32 4 2.546 ns 0.0607 ns 0.1079 ns 2.510 ns 0.52 0.02
RustRapidHashV3 4 4.596 ns 0.1162 ns 0.1292 ns 4.567 ns 0.94 0.03
RustFoldHash64 4 3.032 ns 0.0886 ns 0.2087 ns 2.957 ns 0.62 0.04
StdXxHash64 8 5.302 ns 0.1269 ns 0.2086 ns 5.303 ns 1.00 0.05
RustXxHash64 8 2.339 ns 0.0729 ns 0.0682 ns 2.350 ns 0.44 0.02
StdXxHash32 8 3.481 ns 0.0724 ns 0.0642 ns 3.481 ns 0.66 0.03
RustXxHash32 8 2.175 ns 0.0261 ns 0.0231 ns 2.172 ns 0.41 0.02
StdXxHash3 8 2.057 ns 0.0376 ns 0.0333 ns 2.054 ns 0.39 0.02
RustSipHash24 8 10.473 ns 0.0604 ns 0.0535 ns 10.453 ns 1.98 0.08
RustSipHash13 8 7.249 ns 0.0359 ns 0.0300 ns 7.242 ns 1.37 0.05
StdMarvinHash32 8 3.195 ns 0.0445 ns 0.0417 ns 3.189 ns 0.60 0.02
RustRapidHashV3 8 4.342 ns 0.0344 ns 0.0305 ns 4.340 ns 0.82 0.03
RustFoldHash64 8 2.975 ns 0.0282 ns 0.0235 ns 2.969 ns 0.56 0.02
StdXxHash64 16 6.142 ns 0.0646 ns 0.0604 ns 6.150 ns 1.00 0.01
RustXxHash64 16 3.466 ns 0.0263 ns 0.0233 ns 3.468 ns 0.56 0.01
StdXxHash32 16 3.971 ns 0.0151 ns 0.0142 ns 3.976 ns 0.65 0.01
RustXxHash32 16 3.675 ns 0.0250 ns 0.0222 ns 3.668 ns 0.60 0.01
StdXxHash3 16 3.292 ns 0.0468 ns 0.0438 ns 3.291 ns 0.54 0.01
RustSipHash24 16 13.215 ns 0.0840 ns 0.0702 ns 13.214 ns 2.15 0.02
RustSipHash13 16 8.139 ns 0.0671 ns 0.0627 ns 8.115 ns 1.33 0.02
StdMarvinHash32 16 4.852 ns 0.0600 ns 0.0501 ns 4.849 ns 0.79 0.01
RustRapidHashV3 16 4.264 ns 0.0190 ns 0.0168 ns 4.259 ns 0.69 0.01
RustFoldHash64 16 3.090 ns 0.0366 ns 0.0305 ns 3.083 ns 0.50 0.01
StdXxHash64 32 9.892 ns 0.0453 ns 0.0378 ns 9.895 ns 1.00 0.01
RustXxHash64 32 8.145 ns 0.0649 ns 0.0607 ns 8.138 ns 0.82 0.01
StdXxHash32 32 5.791 ns 0.0295 ns 0.0276 ns 5.796 ns 0.59 0.00
RustXxHash32 32 5.785 ns 0.0208 ns 0.0195 ns 5.786 ns 0.58 0.00
StdXxHash3 32 6.132 ns 0.0781 ns 0.0731 ns 6.100 ns 0.62 0.01
RustSipHash24 32 18.329 ns 0.0630 ns 0.0589 ns 18.337 ns 1.85 0.01
RustSipHash13 32 11.506 ns 0.0570 ns 0.0534 ns 11.505 ns 1.16 0.01
StdMarvinHash32 32 8.995 ns 0.0409 ns 0.0383 ns 9.001 ns 0.91 0.01
RustRapidHashV3 32 7.990 ns 0.0688 ns 0.0643 ns 7.974 ns 0.81 0.01
RustFoldHash64 32 10.158 ns 0.0430 ns 0.0359 ns 10.167 ns 1.03 0.01
StdXxHash64 64 12.399 ns 0.0725 ns 0.0678 ns 12.405 ns 1.00 0.01
RustXxHash64 64 10.542 ns 0.0506 ns 0.0449 ns 10.538 ns 0.85 0.01
StdXxHash32 64 10.404 ns 0.0498 ns 0.0466 ns 10.396 ns 0.84 0.01
RustXxHash32 64 9.633 ns 0.0331 ns 0.0310 ns 9.638 ns 0.78 0.00
StdXxHash3 64 10.915 ns 0.0397 ns 0.0371 ns 10.919 ns 0.88 0.01
RustSipHash24 64 29.864 ns 0.0918 ns 0.0859 ns 29.857 ns 2.41 0.01
RustSipHash13 64 17.287 ns 0.0981 ns 0.0917 ns 17.299 ns 1.39 0.01
StdMarvinHash32 64 19.219 ns 0.1386 ns 0.1158 ns 19.203 ns 1.55 0.01
RustRapidHashV3 64 12.552 ns 0.1478 ns 0.1310 ns 12.556 ns 1.01 0.01
RustFoldHash64 64 14.446 ns 0.2789 ns 0.2609 ns 14.423 ns 1.17 0.02
StdXxHash64 128 16.516 ns 0.2546 ns 0.2257 ns 16.497 ns 1.00 0.02
RustXxHash64 128 16.100 ns 0.1243 ns 0.1163 ns 16.110 ns 0.97 0.01
StdXxHash32 128 17.831 ns 0.1408 ns 0.1317 ns 17.776 ns 1.08 0.02
RustXxHash32 128 17.838 ns 0.1293 ns 0.1146 ns 17.840 ns 1.08 0.02
StdXxHash3 128 21.888 ns 0.1195 ns 0.1118 ns 21.882 ns 1.33 0.02
RustSipHash24 128 51.861 ns 0.2315 ns 0.2052 ns 51.857 ns 3.14 0.04
RustSipHash13 128 28.890 ns 0.3354 ns 0.3137 ns 28.865 ns 1.75 0.03
StdMarvinHash32 128 39.658 ns 0.1951 ns 0.1730 ns 39.616 ns 2.40 0.03
RustRapidHashV3 128 20.786 ns 0.2105 ns 0.1866 ns 20.752 ns 1.26 0.02
RustFoldHash64 128 19.445 ns 0.4123 ns 0.9878 ns 18.939 ns 1.18 0.06
StdXxHash64 256 26.030 ns 0.4425 ns 0.3695 ns 25.967 ns 1.00 0.02
RustXxHash64 256 29.236 ns 0.5657 ns 0.5015 ns 29.210 ns 1.12 0.02
StdXxHash32 256 34.974 ns 0.1847 ns 0.1637 ns 34.970 ns 1.34 0.02
RustXxHash32 256 34.776 ns 0.2812 ns 0.2492 ns 34.759 ns 1.34 0.02
StdXxHash3 256 70.983 ns 1.3855 ns 1.2960 ns 70.670 ns 2.73 0.06
RustSipHash24 256 97.290 ns 0.9096 ns 0.8064 ns 96.953 ns 3.74 0.06
RustSipHash13 256 55.524 ns 1.1445 ns 1.1753 ns 55.306 ns 2.13 0.05
StdMarvinHash32 256 81.086 ns 0.5239 ns 0.4901 ns 81.326 ns 3.12 0.05
RustRapidHashV3 256 37.347 ns 0.4964 ns 0.4643 ns 37.441 ns 1.44 0.03
RustFoldHash64 256 36.027 ns 0.5025 ns 0.4701 ns 35.803 ns 1.38 0.03
StdXxHash64 512 46.243 ns 0.9517 ns 1.8335 ns 45.773 ns 1.00 0.05
RustXxHash64 512 45.440 ns 0.6333 ns 0.5614 ns 45.322 ns 0.98 0.04
StdXxHash32 512 67.970 ns 0.7493 ns 0.7009 ns 68.060 ns 1.47 0.06
RustXxHash32 512 69.355 ns 1.3723 ns 1.6853 ns 69.189 ns 1.50 0.07
StdXxHash3 512 120.214 ns 2.3846 ns 3.2641 ns 121.081 ns 2.60 0.12
RustSipHash24 512 191.377 ns 0.4836 ns 0.3776 ns 191.347 ns 4.14 0.15
RustSipHash13 512 105.966 ns 0.4433 ns 0.3702 ns 106.046 ns 2.29 0.09
StdMarvinHash32 512 165.056 ns 1.0865 ns 1.0163 ns 165.013 ns 3.57 0.13
RustRapidHashV3 512 74.435 ns 0.8793 ns 0.7795 ns 74.406 ns 1.61 0.06
RustFoldHash64 512 76.041 ns 0.3381 ns 0.2997 ns 76.084 ns 1.65 0.06
StdXxHash64 1024 78.714 ns 0.9949 ns 0.9307 ns 78.865 ns 1.00 0.02
RustXxHash64 1024 84.394 ns 1.6766 ns 2.2382 ns 83.772 ns 1.07 0.03
StdXxHash32 1024 140.793 ns 2.8074 ns 4.4528 ns 140.689 ns 1.79 0.06
RustXxHash32 1024 136.343 ns 2.5828 ns 2.4160 ns 136.081 ns 1.73 0.04
StdXxHash3 1024 205.138 ns 3.1673 ns 2.6448 ns 204.670 ns 2.61 0.04
RustSipHash24 1024 396.947 ns 7.2287 ns 6.0363 ns 398.470 ns 5.04 0.09
RustSipHash13 1024 208.326 ns 3.4326 ns 3.2109 ns 209.715 ns 2.65 0.05
StdMarvinHash32 1024 332.841 ns 6.4972 ns 6.0775 ns 331.260 ns 4.23 0.09
RustRapidHashV3 1024 140.662 ns 1.3225 ns 1.1044 ns 140.361 ns 1.79 0.02
RustFoldHash64 1024 144.230 ns 2.9161 ns 2.7277 ns 144.570 ns 1.83 0.04

About

FoldHash, RapidHashV3, SipHash24/13, XXHash32/64.

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages