N-R-K / ChibiHash

Small, Fast, Portable 64-bit hash function
https://nrk.neocities.org/articles/chibihash
90 stars 1 forks source link
64-bit c hash hash-function hash-functions smhasher

ChibiHash: Small, Fast 64 bit hash function

I started writing this because all the 64 bit hash functions I came across were either too slow (FNV-1a, one byte at a time processing), or too large spanning hundreds of lines of code, or non-portable due to using hardware specific instructions. Being small and portable, the goal is to be able to use ChibiHash as a good "default" for non-cryptographic 64-bit hashing needs.

Some key features:

Here's some benchmark against other similar hash functions:

Name Large input (GiB/sec) Small input (Cycles/Hash)
chibihash64 18.08 49
xxhash64 12.59 50
city64 14.95 35
spooky64 13.83 59

It's the fastest of the bunch for large string throughput. For small string (< 32 bytes), cityhash beats it - worth noting that cityhash has hardcoded special cases for input below or equal 32 bytes.

When NOT to use

The introduction should make it clear on why you'd want to use this. Here are some reasons to avoid using this:

Unofficial ports

A list of unofficial ports to other languages is maintained here.