What's faster, hashing a string and comparing the hash, or simply comparing the string? This Rust benchmark measures just that.
Here are the results in a benchmark done in my machine:
Timer precision: 23 ns
hashing fastest │ slowest │ median │ mean │ samples │ iters
├─ comparison_long 3.23 ns │ 3.236 ns │ 3.231 ns │ 3.232 ns │ 100 │ 102400
├─ comparison_short 3.231 ns │ 12.12 ns │ 3.233 ns │ 3.334 ns │ 100 │ 102400
├─ comparison_true 143.1 µs │ 1.787 ms │ 144.5 µs │ 163.2 µs │ 100 │ 100
├─ ahash │ │ │ │ │
│ ├─ equal 365.8 µs │ 1.913 ms │ 375 µs │ 394.2 µs │ 100 │ 100
│ ├─ long 365.4 µs │ 1.755 ms │ 374.5 µs │ 388.6 µs │ 100 │ 100
│ ╰─ short 6.427 µs │ 62.46 µs │ 6.489 µs │ 7.146 µs │ 100 │ 100
├─ blake3 │ │ │ │ │
│ ├─ equal 4.337 ms │ 7.094 ms │ 4.874 ms │ 4.941 ms │ 100 │ 100
│ ├─ long 4.491 ms │ 6.591 ms │ 4.813 ms │ 4.891 ms │ 100 │ 100
│ ╰─ short 93.45 µs │ 118.7 µs │ 93.57 µs │ 94.71 µs │ 100 │ 100
├─ cityhasher │ │ │ │ │
│ ├─ equal 675.5 µs │ 2.43 ms │ 720.7 µs │ 763.3 µs │ 100 │ 100
│ ├─ long 649.7 µs │ 2.627 ms │ 716.3 µs │ 744.8 µs │ 100 │ 100
│ ╰─ short 12.73 µs │ 111.2 µs │ 12.78 µs │ 13.89 µs │ 100 │ 100
├─ default_hasher │ │ │ │ │
│ ├─ equal 2.132 ms │ 3.027 ms │ 2.343 ms │ 2.322 ms │ 100 │ 100
│ ├─ long 2.322 ms │ 2.461 ms │ 2.333 ms │ 2.343 ms │ 100 │ 100
│ ╰─ short 45.12 µs │ 55.72 µs │ 45.24 µs │ 45.57 µs │ 100 │ 100
├─ fasthash │ │ │ │ │
│ ├─ equal 378.7 µs │ 396.8 µs │ 379.7 µs │ 383.4 µs │ 100 │ 100
│ ├─ long 405.2 µs │ 556.6 µs │ 415.8 µs │ 417.6 µs │ 100 │ 100
│ ╰─ short 7.923 µs │ 20.42 µs │ 7.976 µs │ 8.102 µs │ 100 │ 100
├─ fnv │ │ │ │ │
│ ├─ equal 8.995 ms │ 11.08 ms │ 9.668 ms │ 9.63 ms │ 100 │ 100
│ ├─ long 8.782 ms │ 10.73 ms │ 9.113 ms │ 9.145 ms │ 100 │ 100
│ ╰─ short 165 µs │ 385 µs │ 170.3 µs │ 176.8 µs │ 100 │ 100
├─ fxhash │ │ │ │ │
│ ├─ equal 1.528 ms │ 2.738 ms │ 1.537 ms │ 1.552 ms │ 100 │ 100
│ ├─ long 1.527 ms │ 2.851 ms │ 1.536 ms │ 1.552 ms │ 100 │ 100
│ ╰─ short 29.66 µs │ 84.24 µs │ 29.66 µs │ 30.42 µs │ 100 │ 100
├─ gxhash │ │ │ │ │
│ ├─ equal 351.6 µs │ 606.7 µs │ 354 µs │ 360.3 µs │ 100 │ 100
│ ├─ long 358.1 µs │ 580.3 µs │ 364.4 µs │ 370.7 µs │ 100 │ 100
│ ╰─ short 6.411 µs │ 20.41 µs │ 6.481 µs │ 6.705 µs │ 100 │ 100
├─ highway │ │ │ │ │
│ ├─ equal 862.4 µs │ 1.023 ms │ 872.3 µs │ 876.9 µs │ 100 │ 100
│ ├─ long 860.5 µs │ 979.7 µs │ 870.2 µs │ 872.5 µs │ 100 │ 100
│ ╰─ short 16.79 µs │ 29.05 µs │ 16.84 µs │ 17.11 µs │ 100 │ 100
├─ hud_slice_by_8 │ │ │ │ │
│ ├─ equal 3.574 ms │ 4.08 ms │ 3.955 ms │ 3.882 ms │ 100 │ 100
│ ├─ long 3.564 ms │ 17.53 ms │ 3.69 ms │ 3.868 ms │ 100 │ 100
│ ╰─ short 69.32 µs │ 119.1 µs │ 87.84 µs │ 86.88 µs │ 100 │ 100
├─ meowhash │ │ │ │ │
│ ├─ equal 308.3 µs │ 727.4 µs │ 324.4 µs │ 330.7 µs │ 100 │ 100
│ ├─ long 291.4 µs │ 582.4 µs │ 300.9 µs │ 307.5 µs │ 100 │ 100
│ ╰─ short 6.084 µs │ 34.68 µs │ 6.286 µs │ 6.941 µs │ 100 │ 100
├─ rustc_hash │ │ │ │ │
│ ├─ equal 438.9 µs │ 803.4 µs │ 464.9 µs │ 473.4 µs │ 100 │ 100
│ ├─ long 434.5 µs │ 750.1 µs │ 462.7 µs │ 469 µs │ 100 │ 100
│ ╰─ short 8.5 µs │ 28.5 µs │ 8.792 µs │ 9.26 µs │ 100 │ 100
├─ wyhash │ │ │ │ │
│ ├─ equal 616.2 µs │ 1.367 ms │ 655.9 µs │ 673.9 µs │ 100 │ 100
│ ├─ long 636.5 µs │ 1.076 ms │ 681.2 µs │ 700.7 µs │ 100 │ 100
│ ╰─ short 11.36 µs │ 35.87 µs │ 12.14 µs │ 13.24 µs │ 100 │ 100
├─ xxh3 │ │ │ │ │
│ ├─ equal 623.8 µs │ 1.094 ms │ 661.1 µs │ 696.4 µs │ 100 │ 100
│ ├─ long 634.5 µs │ 1.756 ms │ 998.1 µs │ 933.2 µs │ 100 │ 100
│ ╰─ short 12.11 µs │ 34.39 µs │ 12.14 µs │ 14.61 µs │ 100 │ 100
╰─ xxhash_rust_xxh3 │ │ │ │ │
├─ equal 549.6 µs │ 1.048 ms │ 585.1 µs │ 599.6 µs │ 100 │ 100
├─ long 551.4 µs │ 951.7 µs │ 596.4 µs │ 606 µs │ 100 │ 100
╰─ short 10.13 µs │ 40.44 µs │ 10.19 µs │ 11.25 µs │ 100 │ 100
Timer precision: 17 ns
small fastest │ slowest │ median │ mean │ samples │ iters
├─ ahash │ │ │ │ │
│ ├─ _100_bytes 50.68 ns │ 17.81 µs │ 67.68 ns │ 247.9 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 27.13 µs │ 49.97 µs │ 29.75 µs │ 31.17 µs │ 100 │ 100
│ ├─ _10_bytes 8.903 ns │ 17.05 ns │ 8.931 ns │ 10.53 ns │ 100 │ 12800
│ ├─ _10_bytes_x1000 15.26 µs │ 34.69 µs │ 16.25 µs │ 17.01 µs │ 100 │ 100
│ ├─ _30_bytes 8.919 ns │ 109 ns │ 8.95 ns │ 11.65 ns │ 100 │ 12800
│ ├─ _30_bytes_x1000 14.87 µs │ 31.48 µs │ 15.86 µs │ 16.35 µs │ 100 │ 100
│ ├─ _3_bytes 8.317 ns │ 110.7 ns │ 8.38 ns │ 10.03 ns │ 100 │ 12800
│ ╰─ _3_bytes_x1000 8.615 µs │ 15.3 µs │ 8.625 µs │ 8.815 µs │ 100 │ 100
├─ blake3 │ │ │ │ │
│ ├─ _100_bytes 186.6 ns │ 10.77 µs │ 242.1 ns │ 405 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 160.6 µs │ 220.4 µs │ 183.2 µs │ 185.3 µs │ 100 │ 100
│ ├─ _10_bytes 90.87 ns │ 878.6 ns │ 91.02 ns │ 102.8 ns │ 100 │ 1600
│ ├─ _10_bytes_x1000 89.26 µs │ 129.1 µs │ 96.92 µs │ 100.7 µs │ 100 │ 100
│ ├─ _30_bytes 91.49 ns │ 1.045 µs │ 94.93 ns │ 111.1 ns │ 100 │ 1600
│ ├─ _30_bytes_x1000 89.72 µs │ 124.6 µs │ 95.51 µs │ 98.56 µs │ 100 │ 100
│ ├─ _3_bytes 90.68 ns │ 984.7 ns │ 94.06 ns │ 116.4 ns │ 100 │ 1600
│ ╰─ _3_bytes_x1000 88.2 µs │ 180.6 µs │ 93.92 µs │ 100 µs │ 100 │ 100
├─ cityhasher │ │ │ │ │
│ ├─ _100_bytes 49.68 ns │ 3.626 µs │ 52.68 ns │ 89.95 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 31.87 µs │ 110.2 µs │ 33.96 µs │ 35.56 µs │ 100 │ 100
│ ├─ _10_bytes 8.837 ns │ 58.2 ns │ 9.423 ns │ 9.763 ns │ 100 │ 25600
│ ├─ _10_bytes_x1000 13.91 µs │ 33.37 µs │ 14.81 µs │ 15.97 µs │ 100 │ 100
│ ├─ _30_bytes 12.74 ns │ 12.92 ns │ 12.8 ns │ 12.8 ns │ 100 │ 25600
│ ├─ _30_bytes_x1000 14.51 µs │ 101.8 µs │ 15.45 µs │ 17.33 µs │ 100 │ 100
│ ├─ _3_bytes 9.435 ns │ 9.477 ns │ 9.46 ns │ 9.455 ns │ 100 │ 25600
│ ╰─ _3_bytes_x1000 8.499 µs │ 24.9 µs │ 9.114 µs │ 9.8 µs │ 100 │ 100
├─ default_hasher │ │ │ │ │
│ ├─ _100_bytes 39.93 ns │ 242.7 ns │ 42.82 ns │ 44.23 ns │ 100 │ 6400
│ ├─ _100_bytes_x1000 41.28 µs │ 62.82 µs │ 44.05 µs │ 45.79 µs │ 100 │ 100
│ ├─ _10_bytes 15.19 ns │ 15.98 ns │ 15.26 ns │ 15.25 ns │ 100 │ 12800
│ ├─ _10_bytes_x1000 17.74 µs │ 38.98 µs │ 18.89 µs │ 20.41 µs │ 100 │ 100
│ ├─ _30_bytes 19.78 ns │ 120.5 ns │ 20.45 ns │ 21.35 ns │ 100 │ 12800
│ ├─ _30_bytes_x1000 18.96 µs │ 55.97 µs │ 19.83 µs │ 21.22 µs │ 100 │ 100
│ ├─ _3_bytes 13.63 ns │ 150.6 ns │ 14.1 ns │ 16.96 ns │ 100 │ 12800
│ ╰─ _3_bytes_x1000 12.16 µs │ 30.32 µs │ 12.62 µs │ 13.92 µs │ 100 │ 100
├─ fasthash │ │ │ │ │
│ ├─ _100_bytes 17.1 ns │ 119.3 ns │ 17.76 ns │ 20.5 ns │ 100 │ 12800
│ ├─ _100_bytes_x1000 28.65 µs │ 51.46 µs │ 30.56 µs │ 32.08 µs │ 100 │ 100
│ ├─ _10_bytes 6.966 ns │ 99.78 ns │ 7.198 ns │ 9.098 ns │ 100 │ 25600
│ ├─ _10_bytes_x1000 15.31 µs │ 34.1 µs │ 16.51 µs │ 17.64 µs │ 100 │ 100
│ ├─ _30_bytes 11.17 ns │ 64.43 ns │ 11.91 ns │ 13.28 ns │ 100 │ 25600
│ ├─ _30_bytes_x1000 21.4 µs │ 42.49 µs │ 22.77 µs │ 23.75 µs │ 100 │ 100
│ ├─ _3_bytes 7.036 ns │ 56.83 ns │ 7.044 ns │ 7.62 ns │ 100 │ 25600
│ ╰─ _3_bytes_x1000 6.69 µs │ 20.28 µs │ 6.902 µs │ 7.484 µs │ 100 │ 100
├─ fnv │ │ │ │ │
│ ├─ _100_bytes 1.519 ns │ 14.41 ns │ 1.577 ns │ 1.82 ns │ 100 │ 102400
│ ├─ _100_bytes_x1000 106.4 µs │ 322.1 µs │ 113.4 µs │ 122 µs │ 100 │ 100
│ ├─ _10_bytes 1.519 ns │ 46.7 ns │ 1.52 ns │ 2.37 ns │ 100 │ 102400
│ ├─ _10_bytes_x1000 6.756 µs │ 20.05 µs │ 7.056 µs │ 7.725 µs │ 100 │ 100
│ ├─ _30_bytes 1.818 ns │ 13.59 ns │ 1.891 ns │ 1.989 ns │ 100 │ 102400
│ ├─ _30_bytes_x1000 24.78 µs │ 51.03 µs │ 26.49 µs │ 28.03 µs │ 100 │ 100
│ ├─ _3_bytes 1.82 ns │ 14.69 ns │ 1.961 ns │ 2.26 ns │ 100 │ 102400
│ ╰─ _3_bytes_x1000 3.37 µs │ 9.188 µs │ 3.373 µs │ 3.559 µs │ 100 │ 100
├─ fxhash │ │ │ │ │
│ ├─ _100_bytes 63.62 ns │ 450 ns │ 64.2 ns │ 68.49 ns │ 100 │ 3200
│ ├─ _100_bytes_x1000 18.55 µs │ 40.92 µs │ 18.57 µs │ 20.06 µs │ 100 │ 100
│ ├─ _10_bytes 1.518 ns │ 15.78 ns │ 1.578 ns │ 1.842 ns │ 100 │ 102400
│ ├─ _10_bytes_x1000 10.32 µs │ 23.67 µs │ 10.98 µs │ 11.15 µs │ 100 │ 100
│ ├─ _30_bytes 1.82 ns │ 14.98 ns │ 1.959 ns │ 2.357 ns │ 100 │ 102400
│ ├─ _30_bytes_x1000 13.35 µs │ 121.7 µs │ 13.77 µs │ 16.6 µs │ 100 │ 100
│ ├─ _3_bytes 1.826 ns │ 14.11 ns │ 1.96 ns │ 2.23 ns │ 100 │ 102400
│ ╰─ _3_bytes_x1000 2.405 µs │ 15.74 µs │ 2.493 µs │ 2.606 µs │ 100 │ 100
├─ gxhash │ │ │ │ │
│ ├─ _100_bytes 13.56 ns │ 115.1 ns │ 14.04 ns │ 16.11 ns │ 100 │ 12800
│ ├─ _100_bytes_x1000 28.84 µs │ 79.26 µs │ 30.71 µs │ 32.29 µs │ 100 │ 100
│ ├─ _10_bytes 5.497 ns │ 30.08 ns │ 5.513 ns │ 5.774 ns │ 100 │ 51200
│ ├─ _10_bytes_x1000 17.89 µs │ 31.82 µs │ 18.46 µs │ 19.7 µs │ 100 │ 100
│ ├─ _30_bytes 8.114 ns │ 29.98 ns │ 8.208 ns │ 8.427 ns │ 100 │ 25600
│ ├─ _30_bytes_x1000 21.49 µs │ 42.19 µs │ 22.83 µs │ 24.19 µs │ 100 │ 100
│ ├─ _3_bytes 5.308 ns │ 32 ns │ 5.496 ns │ 6.18 ns │ 100 │ 51200
│ ╰─ _3_bytes_x1000 17.29 µs │ 43.3 µs │ 17.83 µs │ 18.62 µs │ 100 │ 100
├─ highway │ │ │ │ │
│ ├─ _100_bytes 66.68 ns │ 4.875 µs │ 75.68 ns │ 124 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 52.8 µs │ 94.13 µs │ 53.8 µs │ 56.92 µs │ 100 │ 100
│ ├─ _10_bytes 40.32 ns │ 312.7 ns │ 41.74 ns │ 44.19 ns │ 100 │ 6400
│ ├─ _10_bytes_x1000 38.89 µs │ 223.4 µs │ 43.36 µs │ 47.45 µs │ 100 │ 100
│ ├─ _30_bytes 45.18 ns │ 45.7 ns │ 45.57 ns │ 45.59 ns │ 100 │ 6400
│ ├─ _30_bytes_x1000 41.84 µs │ 67.45 µs │ 44.54 µs │ 46.42 µs │ 100 │ 100
│ ├─ _3_bytes 40.13 ns │ 255.1 ns │ 41.6 ns │ 45.61 ns │ 100 │ 6400
│ ╰─ _3_bytes_x1000 38.65 µs │ 62.86 µs │ 41.17 µs │ 43.02 µs │ 100 │ 100
├─ hud_slice_by_8 │ │ │ │ │
│ ├─ _100_bytes 97.68 ns │ 6.478 µs │ 113.6 ns │ 180.7 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 61.4 µs │ 112.1 µs │ 65.5 µs │ 70.94 µs │ 100 │ 100
│ ├─ _10_bytes 11.78 ns │ 61.81 ns │ 12.41 ns │ 13.79 ns │ 100 │ 25600
│ ├─ _10_bytes_x1000 14.12 µs │ 39.69 µs │ 14.63 µs │ 15.87 µs │ 100 │ 100
│ ├─ _30_bytes 33.48 ns │ 1.39 µs │ 33.84 ns │ 50.4 ns │ 100 │ 6400
│ ├─ _30_bytes_x1000 30.5 µs │ 52.96 µs │ 33.36 µs │ 34.4 µs │ 100 │ 100
│ ├─ _3_bytes 8.528 ns │ 59.28 ns │ 8.81 ns │ 9.651 ns │ 100 │ 25600
│ ╰─ _3_bytes_x1000 8.153 µs │ 21.71 µs │ 8.415 µs │ 8.719 µs │ 100 │ 100
├─ meowhash │ │ │ │ │
│ ├─ _100_bytes 78.68 ns │ 1.758 µs │ 80.68 ns │ 97.98 ns │ 100 │ 100
│ ├─ _100_bytes_x1000 64.5 µs │ 95.34 µs │ 69.32 µs │ 71.86 µs │ 100 │ 100
│ ├─ _10_bytes 57.68 ns │ 63.99 ns │ 58.06 ns │ 58.15 ns │ 100 │ 3200
│ ├─ _10_bytes_x1000 55.8 µs │ 85.74 µs │ 59.43 µs │ 61.46 µs │ 100 │ 100
│ ├─ _30_bytes 53.59 ns │ 463.5 ns │ 57.15 ns │ 64.37 ns │ 100 │ 3200
│ ├─ _30_bytes_x1000 56.25 µs │ 100.3 µs │ 59.96 µs │ 63.75 µs │ 100 │ 100
│ ├─ _3_bytes 56.52 ns │ 220.2 ns │ 58.4 ns │ 59.79 ns │ 100 │ 3200
│ ╰─ _3_bytes_x1000 54.92 µs │ 179.4 µs │ 59.45 µs │ 64.22 µs │ 100 │ 100
├─ rustc_hash │ │ │ │ │
│ ├─ _100_bytes 1.575 ns │ 5.994 ns │ 1.577 ns │ 1.627 ns │ 100 │ 102400
│ ├─ _100_bytes_x1000 13.66 µs │ 31.75 µs │ 14.22 µs │ 15.08 µs │ 100 │ 100
│ ├─ _10_bytes 1.638 ns │ 13.53 ns │ 1.639 ns │ 1.76 ns │ 100 │ 102400
│ ├─ _10_bytes_x1000 9.719 µs │ 36.38 µs │ 10.02 µs │ 10.65 µs │ 100 │ 100
│ ├─ _30_bytes 1.889 ns │ 15.14 ns │ 1.96 ns │ 2.195 ns │ 100 │ 102400
│ ├─ _30_bytes_x1000 9.719 µs │ 22.72 µs │ 10.34 µs │ 10.61 µs │ 100 │ 100
│ ├─ _3_bytes 1.817 ns │ 21.57 ns │ 1.826 ns │ 2.083 ns │ 100 │ 102400
│ ╰─ _3_bytes_x1000 3.568 µs │ 17.06 µs │ 3.575 µs │ 3.764 µs │ 100 │ 100
├─ wyhash │ │ │ │ │
│ ├─ _100_bytes 16.42 ns │ 110.9 ns │ 17.06 ns │ 17.92 ns │ 100 │ 12800
│ ├─ _100_bytes_x1000 18.59 µs │ 46.36 µs │ 19.87 µs │ 20.76 µs │ 100 │ 100
│ ├─ _10_bytes 9.13 ns │ 9.169 ns │ 9.161 ns │ 9.151 ns │ 100 │ 25600
│ ├─ _10_bytes_x1000 10.56 µs │ 28.27 µs │ 10.91 µs │ 11.73 µs │ 100 │ 100
│ ├─ _30_bytes 11.44 ns │ 64.27 ns │ 11.61 ns │ 12.46 ns │ 100 │ 25600
│ ├─ _30_bytes_x1000 11.74 µs │ 29.22 µs │ 12.49 µs │ 13.22 µs │ 100 │ 100
│ ├─ _3_bytes 9.149 ns │ 58.52 ns │ 9.47 ns │ 9.937 ns │ 100 │ 25600
│ ╰─ _3_bytes_x1000 7.599 µs │ 20.92 µs │ 8.087 µs │ 8.403 µs │ 100 │ 100
├─ xxh3 │ │ │ │ │
│ ├─ _100_bytes 2.93 ns │ 7.499 ns │ 2.931 ns │ 2.979 ns │ 100 │ 102400
│ ├─ _100_bytes_x1000 17.57 µs │ 30.87 µs │ 18.14 µs │ 18.72 µs │ 100 │ 100
│ ├─ _10_bytes 2.831 ns │ 15.61 ns │ 2.932 ns │ 3.026 ns │ 100 │ 102400
│ ├─ _10_bytes_x1000 10.66 µs │ 23.82 µs │ 11 µs │ 11.37 µs │ 100 │ 100
│ ├─ _30_bytes 2.734 ns │ 51.68 ns │ 2.833 ns │ 3.942 ns │ 100 │ 102400
│ ├─ _30_bytes_x1000 11.56 µs │ 31.44 µs │ 12.31 µs │ 12.76 µs │ 100 │ 100
│ ├─ _3_bytes 2.735 ns │ 6.887 ns │ 2.933 ns │ 2.924 ns │ 100 │ 102400
│ ╰─ _3_bytes_x1000 4.069 µs │ 17.18 µs │ 4.334 µs │ 4.752 µs │ 100 │ 100
╰─ xxhash_rust_xxh3 │ │ │ │ │
├─ _100_bytes 50.68 ns │ 3.465 µs │ 54.68 ns │ 90.86 ns │ 100 │ 100
├─ _100_bytes_x1000 35.55 µs │ 63.06 µs │ 37.2 µs │ 39.76 µs │ 100 │ 100
├─ _10_bytes 23.48 ns │ 123 ns │ 25.05 ns │ 25.69 ns │ 100 │ 12800
├─ _10_bytes_x1000 24.92 µs │ 53.82 µs │ 27.39 µs │ 29.1 µs │ 100 │ 100
├─ _30_bytes 23.2 ns │ 126.8 ns │ 24.7 ns │ 25.43 ns │ 100 │ 12800
├─ _30_bytes_x1000 24.52 µs │ 51.26 µs │ 26.96 µs │ 27.73 µs │ 100 │ 100
├─ _3_bytes 18.62 ns │ 210.7 ns │ 18.68 ns │ 21.1 ns │ 100 │ 12800
╰─ _3_bytes_x1000 18.26 µs │ 51.02 µs │ 20.03 µs │ 20.99 µs │ 100 │ 100
As you can see, the default stringA == stringB
is about 10^6 times faster than the fastest hashing algorithm. So yeah, hashing is slower than comparing (at least in Rust). This was tested on the article*.txt
files you see on the file tree.
To see the full Criterion report check here
(Git and Cargo must be installed)
Just clone this repo with git clone https://github.com/rosetta-rs/hashing-rosetta-rs
or download the ZIP with the green button, and run cargo bench
.