A very fast, high-quality 64-bit non-cryptographic hash function for hash tables, maps, and checksums, with discrete-incremental and streamed hashing capabilities.
KOMIHASH is a very fast, high-quality 64-bit non-cryptographic hash function designed for hash tables, hash maps, bloom filters, and data checksums. It solves the need for a reliable, portable hash function with excellent performance on both small strings and large data blocks, offering discrete-incremental and streamed hashing capabilities.
Developers and engineers building high-performance data structures like hash tables and bloom filters, or those needing fast checksums for files and large datasets in C/C++ environments.
Developers choose KOMIHASH for its exceptional speed (up to 27 GB/s), header-only portability, and robust quality—passing all SMHasher tests—while providing flexible hashing modes like discrete-incremental and streamed hashing that many alternatives lack.
Very fast, high-quality hash function, discrete-incremental and streamed hashing-capable (non-cryptographic, header-only C/C++) 27GB/s + PRNG
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Achieves up to 27 GB/s bulk hashing and ~8 cycles/hash for small strings, often outperforming competitors like wyhash and XXH3 in benchmarks, as detailed in the extensive comparison tables.
Written in ISO C99 with zero allocations, it's compatible across C/C++ compilers and platforms including x86, ARM, Windows, Linux, and macOS, making integration straightforward.
Supports discrete-incremental hashing for sequential data like database records and streamed hashing for continuous data streams, enabling intermediate hash retrieval without buffering.
Passes all SMHasher and SMHasher3 tests with collision statistics meeting expectations, ensuring reliability for hash tables, maps, and bloom filters.
Admits it's not cryptographically secure; requires a secret seed in open systems to prevent hash flooding attacks, adding complexity for secure use cases.
Explicitly states performance on 32-bit systems is 'quite low,' making it suboptimal for embedded or legacy environments where speed matters.
Bulk hashing on big-endian systems may be 20% slower due to byte-swapping, unless disabled with a compile-time define, which can impact cross-platform performance consistency.