A Rust implementation of the XXHash algorithm.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
comparison Basic documentation for internal tools Apr 19, 2017
src Remove misplaced parenthesis May 27, 2017
.gitignore
.travis.yml Use old version of rand in old CI Jul 6, 2018
Cargo.toml Release version 1.1.1 Dec 10, 2018
LICENSE.txt Add crate metadata May 9, 2015
README.md Update statistics to include 32-bit hasher Apr 19, 2017

README.md

TwoX-Hash

A Rust implementation of the XXHash algorithm.

Build Status Current Version

Documentation

Examples

With a fixed seed

use std::hash::BuildHasherDefault;
use std::collections::HashMap;
use twox_hash::XxHash;

let mut hash: HashMap<_, _, BuildHasherDefault<XxHash>> = Default::default();
hash.insert(42, "the answer");
assert_eq!(hash.get(&42), Some(&"the answer"));

With a random seed

use std::collections::HashMap;
use twox_hash::RandomXxHashBuilder;

let mut hash: HashMap<_, _, RandomXxHashBuilder> = Default::default();
hash.insert(42, "the answer");
assert_eq!(hash.get(&42), Some(&"the answer"));

Benchmarks

64-bit

Bytes SipHasher (MB/s) XXHash (MB/s) Ratio
1 52 38 73%
4 210 148 70%
16 615 615 100%
32 914 1391 152%
128 1347 3657 271%
256 1414 5019 355%
512 1546 6168 399%
1024 1565 6206 397%
1048576 1592 7564 475%
Bytes FnvHasher (MB/s) XXHash (MB/s) Ratio
1 1000 38 4%
4 800 148 19%
16 761 615 81%
32 761 1391 183%
128 727 3657 503%
256 759 5019 661%
512 745 6168 828%
1024 741 6206 838%
1048576 745 7564 1015%

32-bit

Bytes SipHasher (MB/s) XXHash32 (MB/s) Ratio
1 52 55 106%
4 210 210 100%
16 615 1230 200%
32 914 1882 206%
128 1347 3282 244%
256 1414 3459 245%
512 1546 3792 245%
1024 1565 3938 252%
1048576 1592 4127 259%
Bytes FnvHasher (MB/s) XXHash32 (MB/s) Ratio
1 1000 55 6%
4 800 210 26%
16 761 1230 162%
32 761 1882 247%
128 727 3282 451%
256 759 3459 456%
512 745 3792 509%
1024 741 3938 531%
1048576 745 4127 554%

Contributing

  1. Fork it ( https://github.com/shepmaster/twox-hash/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Add a failing test.
  4. Add code to pass the test.
  5. Commit your changes (git commit -am 'Add some feature')
  6. Ensure tests pass.
  7. Push to the branch (git push origin my-new-feature)
  8. Create a new Pull Request