An extremely fast non-cryptographic hash algorithm that processes data at RAM speed limits.
xxHash is an extremely fast non-cryptographic hash algorithm that processes data at RAM speed limits. It provides high-performance hashing for applications requiring fast data integrity checks, hash tables, and bloom filters, with variants offering 32-bit, 64-bit, and 128-bit hash outputs. The algorithm is designed to be portable and produce identical results across different platforms.
Developers and engineers working on performance-critical applications such as databases, file systems, network protocols, and data processing pipelines that require fast hashing without cryptographic security.
xxHash offers unparalleled speed, often exceeding RAM bandwidth, while maintaining high-quality hash properties verified by SMHasher tests. Its portability and optimization for both large and small data make it a superior choice over slower alternatives like CityHash, MurmurHash, or cryptographic hashes.
Extremely fast non-cryptographic hash algorithm
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show XXH3 processing at 31.5 GB/s, exceeding RAM sequential read speeds, making it ideal for high-throughput data processing.
Passes the SMHasher test suite ensuring excellent dispersion and minimal collisions, with additional massive collision tests verifying robustness.
Designed with low latency on small inputs, as evidenced by performance graphs, beneficial for hash tables and bloom filters.
Produces identical hash values regardless of endianness, ensuring consistency across different systems without platform-specific adjustments.
Lacks cryptographic properties like resistance to preimage or collision attacks, making it unsuitable for security-sensitive applications.
Requires managing numerous macros such as XXH_VECTOR and XXH_INLINE_ALL for optimal performance, which can be overwhelming and error-prone.
XXH3 significantly increases library size, necessitating the use of flags like XXH_NO_XXH3 for size-constrained environments, adding compilation overhead.