Hashing

August 19, 2026 ยท View on GitHub

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

MethodSizeMeanErrorStdDevMedianRatioRatioSD
StdXxHash6445.242 ns0.1307 ns0.1996 ns5.191 ns1.000.05
RustXxHash6442.003 ns0.0699 ns0.1148 ns1.978 ns0.380.03
StdXxHash3242.733 ns0.0581 ns0.0515 ns2.735 ns0.520.02
RustXxHash3241.547 ns0.0518 ns0.0459 ns1.550 ns0.300.01
StdXxHash341.771 ns0.0267 ns0.0250 ns1.760 ns0.340.01
RustSipHash2447.391 ns0.0205 ns0.0171 ns7.386 ns1.410.05
RustSipHash1345.613 ns0.0726 ns0.0644 ns5.589 ns1.070.04
StdMarvinHash3242.427 ns0.0169 ns0.0150 ns2.423 ns0.460.02
RustRapidHashV342.095 ns0.0427 ns0.0357 ns2.105 ns0.400.02
RustFoldHash6441.510 ns0.0243 ns0.0227 ns1.513 ns0.290.01
StdXxHash6484.945 ns0.0982 ns0.0919 ns4.958 ns1.000.03
RustXxHash6482.407 ns0.0747 ns0.0830 ns2.387 ns0.490.02
StdXxHash3283.459 ns0.0503 ns0.0446 ns3.449 ns0.700.02
RustXxHash3282.250 ns0.0715 ns0.0735 ns2.238 ns0.460.02
StdXxHash381.796 ns0.0269 ns0.0252 ns1.799 ns0.360.01
RustSipHash24810.490 ns0.0733 ns0.0649 ns10.467 ns2.120.04
RustSipHash1386.577 ns0.0247 ns0.0231 ns6.568 ns1.330.02
StdMarvinHash3283.153 ns0.0194 ns0.0162 ns3.157 ns0.640.01
RustRapidHashV382.099 ns0.0349 ns0.0310 ns2.098 ns0.420.01
RustFoldHash6481.390 ns0.0401 ns0.0375 ns1.390 ns0.280.01
StdXxHash64166.075 ns0.0542 ns0.0480 ns6.063 ns1.000.01
RustXxHash64163.497 ns0.0421 ns0.0394 ns3.492 ns0.580.01
StdXxHash32163.959 ns0.0225 ns0.0199 ns3.961 ns0.650.01
RustXxHash32164.051 ns0.0293 ns0.0274 ns4.057 ns0.670.01
StdXxHash3161.685 ns0.0566 ns0.0529 ns1.687 ns0.280.01
RustSipHash241612.789 ns0.0757 ns0.0708 ns12.795 ns2.110.02
RustSipHash13168.118 ns0.0289 ns0.0270 ns8.115 ns1.340.01
StdMarvinHash32164.779 ns0.0142 ns0.0133 ns4.779 ns0.790.01
RustRapidHashV3162.071 ns0.0337 ns0.0299 ns2.080 ns0.340.01
RustFoldHash64161.378 ns0.0216 ns0.0181 ns1.371 ns0.230.00
StdXxHash64329.729 ns0.0485 ns0.0454 ns9.732 ns1.000.01
RustXxHash64328.144 ns0.0503 ns0.0470 ns8.132 ns0.840.01
StdXxHash32325.789 ns0.0276 ns0.0259 ns5.791 ns0.590.00
RustXxHash32325.795 ns0.0324 ns0.0303 ns5.782 ns0.600.00
StdXxHash3323.692 ns0.0561 ns0.0497 ns3.692 ns0.380.01
RustSipHash243218.505 ns0.0570 ns0.0505 ns18.506 ns1.900.01
RustSipHash133211.278 ns0.0465 ns0.0435 ns11.284 ns1.160.01
StdMarvinHash32329.049 ns0.0624 ns0.0553 ns9.059 ns0.930.01
RustRapidHashV3327.777 ns0.0565 ns0.0501 ns7.772 ns0.800.01
RustFoldHash64325.971 ns0.0952 ns0.0844 ns5.948 ns0.610.01
StdXxHash646412.715 ns0.0521 ns0.0462 ns12.721 ns1.000.00
RustXxHash646410.982 ns0.0945 ns0.0789 ns10.950 ns0.860.01
StdXxHash326410.314 ns0.1192 ns0.1057 ns10.330 ns0.810.01
RustXxHash32649.620 ns0.0361 ns0.0337 ns9.623 ns0.760.00
StdXxHash3645.367 ns0.0716 ns0.0670 ns5.351 ns0.420.01
RustSipHash246429.577 ns0.0901 ns0.0799 ns29.564 ns2.330.01
RustSipHash136417.122 ns0.0761 ns0.0712 ns17.130 ns1.350.01
StdMarvinHash326418.989 ns0.0443 ns0.0393 ns19.005 ns1.490.01
RustRapidHashV3649.132 ns0.2127 ns0.2089 ns9.217 ns0.720.02
RustFoldHash64647.827 ns0.1027 ns0.0960 ns7.827 ns0.620.01
StdXxHash6412816.715 ns0.1300 ns0.1153 ns16.694 ns1.000.01
RustXxHash6412816.994 ns0.0872 ns0.0816 ns17.001 ns1.020.01
StdXxHash3212817.776 ns0.0604 ns0.0536 ns17.766 ns1.060.01
RustXxHash3212818.715 ns0.4334 ns1.2365 ns18.129 ns1.120.07
StdXxHash31289.458 ns0.0991 ns0.0927 ns9.465 ns0.570.01
RustSipHash2412851.843 ns0.1841 ns0.1722 ns51.859 ns3.100.02
RustSipHash1312829.578 ns0.1174 ns0.1041 ns29.560 ns1.770.01
StdMarvinHash3212839.595 ns0.3505 ns0.3279 ns39.504 ns2.370.02
RustRapidHashV312811.020 ns0.2471 ns0.3213 ns10.955 ns0.660.02
RustFoldHash6412810.019 ns0.2241 ns0.2398 ns9.902 ns0.600.01
StdXxHash6425625.504 ns0.1740 ns0.1543 ns25.488 ns1.000.01
RustXxHash6425628.600 ns0.1724 ns0.1528 ns28.587 ns1.120.01
StdXxHash3225634.206 ns0.1839 ns0.1630 ns34.234 ns1.340.01
RustXxHash3225634.212 ns0.1284 ns0.1201 ns34.237 ns1.340.01
StdXxHash325626.353 ns0.5503 ns0.6117 ns26.204 ns1.030.02
RustSipHash2425696.619 ns0.3966 ns0.3710 ns96.498 ns3.790.03
RustSipHash1325655.235 ns0.3837 ns0.3204 ns55.218 ns2.170.02
StdMarvinHash3225680.121 ns0.2637 ns0.2059 ns80.159 ns3.140.02
RustRapidHashV325615.959 ns0.2054 ns0.1922 ns16.006 ns0.630.01
RustFoldHash6425615.365 ns0.1956 ns0.1633 ns15.323 ns0.600.01
StdXxHash6451242.658 ns0.3765 ns0.3338 ns42.667 ns1.000.01
RustXxHash6451253.391 ns0.4039 ns0.3778 ns53.258 ns1.250.01
StdXxHash3251267.783 ns1.3580 ns1.2703 ns67.186 ns1.590.03
RustXxHash3251268.079 ns1.3248 ns1.8134 ns67.363 ns1.600.04
StdXxHash351227.736 ns0.5179 ns0.6550 ns27.744 ns0.650.02
RustSipHash24512187.760 ns1.8449 ns1.5406 ns187.473 ns4.400.05
RustSipHash13512104.607 ns1.3751 ns1.2863 ns104.402 ns2.450.03
StdMarvinHash32512161.601 ns0.6853 ns0.6410 ns161.628 ns3.790.03
RustRapidHashV351227.949 ns0.5939 ns1.2526 ns27.639 ns0.660.03
RustFoldHash6451229.315 ns0.5714 ns0.5345 ns29.242 ns0.690.01
StdXxHash64102479.034 ns1.5671 ns1.5391 ns78.419 ns1.000.03
RustXxHash641024102.332 ns0.3976 ns0.3525 ns102.329 ns1.300.02
StdXxHash321024133.481 ns0.7729 ns0.6454 ns133.491 ns1.690.03
RustXxHash321024134.456 ns2.1629 ns2.0232 ns134.199 ns1.700.04
StdXxHash3102440.876 ns0.7747 ns0.9222 ns40.632 ns0.520.01
RustSipHash241024376.087 ns4.4737 ns4.1847 ns375.236 ns4.760.10
RustSipHash131024204.750 ns0.9803 ns0.9170 ns204.579 ns2.590.05
StdMarvinHash321024333.267 ns4.3506 ns3.8567 ns332.794 ns4.220.09
RustRapidHashV3102450.849 ns0.7158 ns0.6696 ns50.653 ns0.640.01
RustFoldHash64102451.635 ns0.8319 ns0.6495 ns51.765 ns0.650.01

Benchmarks netstandard2.1

MethodSizeMeanErrorStdDevMedianRatioRatioSD
StdXxHash6444.903 ns0.1088 ns0.1018 ns4.875 ns1.000.03
RustXxHash6442.206 ns0.0706 ns0.1377 ns2.181 ns0.450.03
StdXxHash3243.024 ns0.0843 ns0.0789 ns3.004 ns0.620.02
RustXxHash3241.629 ns0.0374 ns0.0312 ns1.646 ns0.330.01
StdXxHash342.089 ns0.0334 ns0.0312 ns2.090 ns0.430.01
RustSipHash2447.819 ns0.1848 ns0.2128 ns7.773 ns1.600.05
RustSipHash1345.803 ns0.0757 ns0.0671 ns5.804 ns1.180.03
StdMarvinHash3242.546 ns0.0607 ns0.1079 ns2.510 ns0.520.02
RustRapidHashV344.596 ns0.1162 ns0.1292 ns4.567 ns0.940.03
RustFoldHash6443.032 ns0.0886 ns0.2087 ns2.957 ns0.620.04
StdXxHash6485.302 ns0.1269 ns0.2086 ns5.303 ns1.000.05
RustXxHash6482.339 ns0.0729 ns0.0682 ns2.350 ns0.440.02
StdXxHash3283.481 ns0.0724 ns0.0642 ns3.481 ns0.660.03
RustXxHash3282.175 ns0.0261 ns0.0231 ns2.172 ns0.410.02
StdXxHash382.057 ns0.0376 ns0.0333 ns2.054 ns0.390.02
RustSipHash24810.473 ns0.0604 ns0.0535 ns10.453 ns1.980.08
RustSipHash1387.249 ns0.0359 ns0.0300 ns7.242 ns1.370.05
StdMarvinHash3283.195 ns0.0445 ns0.0417 ns3.189 ns0.600.02
RustRapidHashV384.342 ns0.0344 ns0.0305 ns4.340 ns0.820.03
RustFoldHash6482.975 ns0.0282 ns0.0235 ns2.969 ns0.560.02
StdXxHash64166.142 ns0.0646 ns0.0604 ns6.150 ns1.000.01
RustXxHash64163.466 ns0.0263 ns0.0233 ns3.468 ns0.560.01
StdXxHash32163.971 ns0.0151 ns0.0142 ns3.976 ns0.650.01
RustXxHash32163.675 ns0.0250 ns0.0222 ns3.668 ns0.600.01
StdXxHash3163.292 ns0.0468 ns0.0438 ns3.291 ns0.540.01
RustSipHash241613.215 ns0.0840 ns0.0702 ns13.214 ns2.150.02
RustSipHash13168.139 ns0.0671 ns0.0627 ns8.115 ns1.330.02
StdMarvinHash32164.852 ns0.0600 ns0.0501 ns4.849 ns0.790.01
RustRapidHashV3164.264 ns0.0190 ns0.0168 ns4.259 ns0.690.01
RustFoldHash64163.090 ns0.0366 ns0.0305 ns3.083 ns0.500.01
StdXxHash64329.892 ns0.0453 ns0.0378 ns9.895 ns1.000.01
RustXxHash64328.145 ns0.0649 ns0.0607 ns8.138 ns0.820.01
StdXxHash32325.791 ns0.0295 ns0.0276 ns5.796 ns0.590.00
RustXxHash32325.785 ns0.0208 ns0.0195 ns5.786 ns0.580.00
StdXxHash3326.132 ns0.0781 ns0.0731 ns6.100 ns0.620.01
RustSipHash243218.329 ns0.0630 ns0.0589 ns18.337 ns1.850.01
RustSipHash133211.506 ns0.0570 ns0.0534 ns11.505 ns1.160.01
StdMarvinHash32328.995 ns0.0409 ns0.0383 ns9.001 ns0.910.01
RustRapidHashV3327.990 ns0.0688 ns0.0643 ns7.974 ns0.810.01
RustFoldHash643210.158 ns0.0430 ns0.0359 ns10.167 ns1.030.01
StdXxHash646412.399 ns0.0725 ns0.0678 ns12.405 ns1.000.01
RustXxHash646410.542 ns0.0506 ns0.0449 ns10.538 ns0.850.01
StdXxHash326410.404 ns0.0498 ns0.0466 ns10.396 ns0.840.01
RustXxHash32649.633 ns0.0331 ns0.0310 ns9.638 ns0.780.00
StdXxHash36410.915 ns0.0397 ns0.0371 ns10.919 ns0.880.01
RustSipHash246429.864 ns0.0918 ns0.0859 ns29.857 ns2.410.01
RustSipHash136417.287 ns0.0981 ns0.0917 ns17.299 ns1.390.01
StdMarvinHash326419.219 ns0.1386 ns0.1158 ns19.203 ns1.550.01
RustRapidHashV36412.552 ns0.1478 ns0.1310 ns12.556 ns1.010.01
RustFoldHash646414.446 ns0.2789 ns0.2609 ns14.423 ns1.170.02
StdXxHash6412816.516 ns0.2546 ns0.2257 ns16.497 ns1.000.02
RustXxHash6412816.100 ns0.1243 ns0.1163 ns16.110 ns0.970.01
StdXxHash3212817.831 ns0.1408 ns0.1317 ns17.776 ns1.080.02
RustXxHash3212817.838 ns0.1293 ns0.1146 ns17.840 ns1.080.02
StdXxHash312821.888 ns0.1195 ns0.1118 ns21.882 ns1.330.02
RustSipHash2412851.861 ns0.2315 ns0.2052 ns51.857 ns3.140.04
RustSipHash1312828.890 ns0.3354 ns0.3137 ns28.865 ns1.750.03
StdMarvinHash3212839.658 ns0.1951 ns0.1730 ns39.616 ns2.400.03
RustRapidHashV312820.786 ns0.2105 ns0.1866 ns20.752 ns1.260.02
RustFoldHash6412819.445 ns0.4123 ns0.9878 ns18.939 ns1.180.06
StdXxHash6425626.030 ns0.4425 ns0.3695 ns25.967 ns1.000.02
RustXxHash6425629.236 ns0.5657 ns0.5015 ns29.210 ns1.120.02
StdXxHash3225634.974 ns0.1847 ns0.1637 ns34.970 ns1.340.02
RustXxHash3225634.776 ns0.2812 ns0.2492 ns34.759 ns1.340.02
StdXxHash325670.983 ns1.3855 ns1.2960 ns70.670 ns2.730.06
RustSipHash2425697.290 ns0.9096 ns0.8064 ns96.953 ns3.740.06
RustSipHash1325655.524 ns1.1445 ns1.1753 ns55.306 ns2.130.05
StdMarvinHash3225681.086 ns0.5239 ns0.4901 ns81.326 ns3.120.05
RustRapidHashV325637.347 ns0.4964 ns0.4643 ns37.441 ns1.440.03
RustFoldHash6425636.027 ns0.5025 ns0.4701 ns35.803 ns1.380.03
StdXxHash6451246.243 ns0.9517 ns1.8335 ns45.773 ns1.000.05
RustXxHash6451245.440 ns0.6333 ns0.5614 ns45.322 ns0.980.04
StdXxHash3251267.970 ns0.7493 ns0.7009 ns68.060 ns1.470.06
RustXxHash3251269.355 ns1.3723 ns1.6853 ns69.189 ns1.500.07
StdXxHash3512120.214 ns2.3846 ns3.2641 ns121.081 ns2.600.12
RustSipHash24512191.377 ns0.4836 ns0.3776 ns191.347 ns4.140.15
RustSipHash13512105.966 ns0.4433 ns0.3702 ns106.046 ns2.290.09
StdMarvinHash32512165.056 ns1.0865 ns1.0163 ns165.013 ns3.570.13
RustRapidHashV351274.435 ns0.8793 ns0.7795 ns74.406 ns1.610.06
RustFoldHash6451276.041 ns0.3381 ns0.2997 ns76.084 ns1.650.06
StdXxHash64102478.714 ns0.9949 ns0.9307 ns78.865 ns1.000.02
RustXxHash64102484.394 ns1.6766 ns2.2382 ns83.772 ns1.070.03
StdXxHash321024140.793 ns2.8074 ns4.4528 ns140.689 ns1.790.06
RustXxHash321024136.343 ns2.5828 ns2.4160 ns136.081 ns1.730.04
StdXxHash31024205.138 ns3.1673 ns2.6448 ns204.670 ns2.610.04
RustSipHash241024396.947 ns7.2287 ns6.0363 ns398.470 ns5.040.09
RustSipHash131024208.326 ns3.4326 ns3.2109 ns209.715 ns2.650.05
StdMarvinHash321024332.841 ns6.4972 ns6.0775 ns331.260 ns4.230.09
RustRapidHashV31024140.662 ns1.3225 ns1.1044 ns140.361 ns1.790.02
RustFoldHash641024144.230 ns2.9161 ns2.7277 ns144.570 ns1.830.04