Skip to content

rosetta-rs/hashing-rosetta-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

String comparison experiment

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

Running the benchmarks yourself

(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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages