2014-07-10 20:44:08 +00:00
|
|
|
xxHash - Extremely fast hash algorithm
|
|
|
|
======================================
|
|
|
|
|
|
|
|
xxHash is an Extremely fast Hash algorithm, running at RAM speed limits.
|
2015-05-04 21:56:53 +00:00
|
|
|
It successfully completes the [SMHasher](http://code.google.com/p/smhasher/wiki/SMHasher) test suite
|
|
|
|
which evaluates collision, dispersion and randomness qualities of hash functions.
|
2014-07-10 20:44:08 +00:00
|
|
|
|
|
|
|
|Branch |Status |
|
|
|
|
|------------|---------|
|
2014-07-17 11:05:37 +00:00
|
|
|
|master | [![Build Status](https://travis-ci.org/Cyan4973/xxHash.svg?branch=master)](https://travis-ci.org/Cyan4973/xxHash?branch=master) |
|
|
|
|
|dev | [![Build Status](https://travis-ci.org/Cyan4973/xxHash.svg?branch=dev)](https://travis-ci.org/Cyan4973/xxHash?branch=dev) |
|
2014-07-10 20:44:08 +00:00
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
> **Branch Policy:**
|
|
|
|
|
|
|
|
> - The "master" branch is considered stable, at all times.
|
|
|
|
> - The "dev" branch is the one where all contributions must be merged
|
|
|
|
before being promoted to master.
|
|
|
|
> + If you plan to propose a patch, please commit into the "dev" branch,
|
|
|
|
or its own feature branch.
|
|
|
|
Direct commit to "master" are not permitted.
|
|
|
|
|
2014-07-10 20:44:08 +00:00
|
|
|
|
|
|
|
Benchmarks
|
|
|
|
-------------------------
|
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
The benchmark uses SMHasher speed test, compiled with Visual 2010 on a Windows Seven 32-bits box.
|
2014-07-10 20:44:08 +00:00
|
|
|
The reference system uses a Core 2 Duo @3GHz
|
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
|
|
|
|
| Name | Speed | Quality | Author |
|
|
|
|
|---------------|----------|:-------:|------------------|
|
|
|
|
| xxHash | 5.4 GB/s | 10 | Y.C. |
|
|
|
|
| MurmurHash 3a | 2.7 GB/s | 10 | Austin Appleby |
|
|
|
|
| SBox | 1.4 GB/s | 9 | Bret Mulvey |
|
|
|
|
| Lookup3 | 1.2 GB/s | 9 | Bob Jenkins |
|
|
|
|
| CityHash64 | 1.05 GB/s| 10 | Pike & Alakuijala|
|
|
|
|
| FNV | 0.55 GB/s| 5 | Fowler, Noll, Vo |
|
|
|
|
| CRC32 | 0.43 GB/s| 9 | |
|
|
|
|
| MD5-32 | 0.33 GB/s| 10 | Ronald L.Rivest |
|
|
|
|
| SHA1-32 | 0.28 GB/s| 10 | |
|
2014-07-10 20:44:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
Q.Score is a measure of quality of the hash function.
|
|
|
|
It depends on successfully passing SMHasher test set.
|
|
|
|
10 is a perfect score.
|
2015-05-04 21:56:53 +00:00
|
|
|
Algorithms with a score < 5 are not listed on this table.
|
2014-07-10 20:44:08 +00:00
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
A new version, XXH64, has been created thanks to Mathias Westerdahl's contribution,
|
|
|
|
which offers superior speed and dispersion for 64-bits systems.
|
|
|
|
Note however that 32-bits applications will still run faster using the 32-bits version.
|
2014-07-10 20:44:08 +00:00
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
SMHasher speed test, compiled using GCC 4.8.2, on Linux Mint 64-bits.
|
2014-07-10 20:44:08 +00:00
|
|
|
The reference system uses a Core i5-3340M @2.7GHz
|
|
|
|
|
|
|
|
| Version | Speed on 64-bits | Speed on 32-bits |
|
|
|
|
|------------|------------------|------------------|
|
|
|
|
| XXH64 | 13.8 GB/s | 1.9 GB/s |
|
|
|
|
| XXH32 | 6.8 GB/s | 6.0 GB/s |
|
|
|
|
|
2015-08-11 12:51:29 +00:00
|
|
|
|
|
|
|
### License
|
|
|
|
|
|
|
|
The library files `xxhash.c` and `xxhash.h` are BSD licensed.
|
|
|
|
The utility `xxhsum` is GPL licensed.
|
|
|
|
|
|
|
|
|
|
|
|
### Other languages
|
|
|
|
|
2015-05-04 21:56:53 +00:00
|
|
|
Beyond the C reference version,
|
|
|
|
xxHash is also available on many programming languages,
|
|
|
|
thanks to great contributors.
|
2015-10-01 11:57:45 +00:00
|
|
|
They are [listed here](http://cyan4973.github.io/xxHash/).
|
2015-08-11 12:51:29 +00:00
|
|
|
|