4 use test::{black_box, Bencher};
6 fn hash_bytes<H: Hasher>(mut s: H, x: &[u8]) -> u64 {
7 Hasher::write(&mut s, x);
11 fn hash_with<H: Hasher, T: Hash>(mut st: H, x: &T) -> u64 {
16 fn hash<T: Hash>(x: &T) -> u64 {
17 hash_with(SipHasher::new(), x)
21 fn bench_str_under_8_bytes(b: &mut Bencher) {
24 assert_eq!(hash(&s), 16262950014981195938);
29 fn bench_str_of_8_bytes(b: &mut Bencher) {
32 assert_eq!(hash(&s), 4898293253460910787);
37 fn bench_str_over_8_bytes(b: &mut Bencher) {
40 assert_eq!(hash(&s), 10581415515220175264);
45 fn bench_long_str(b: &mut Bencher) {
46 let s = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor \
47 incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud \
48 exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute \
49 irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla \
50 pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui \
51 officia deserunt mollit anim id est laborum.";
53 assert_eq!(hash(&s), 17717065544121360093);
58 fn bench_u32(b: &mut Bencher) {
66 fn bench_u32_keyed(b: &mut Bencher) {
69 let k1 = black_box(0x1);
70 let k2 = black_box(0x2);
71 b.iter(|| hash_with(SipHasher::new_with_keys(k1, k2), &u));
76 fn bench_u64(b: &mut Bencher) {
77 let u = 16262950014981195938u64;
84 fn bench_bytes_4(b: &mut Bencher) {
85 let data = black_box([b' '; 4]);
86 b.iter(|| hash_bytes(SipHasher::default(), &data));
91 fn bench_bytes_7(b: &mut Bencher) {
92 let data = black_box([b' '; 7]);
93 b.iter(|| hash_bytes(SipHasher::default(), &data));
98 fn bench_bytes_8(b: &mut Bencher) {
99 let data = black_box([b' '; 8]);
100 b.iter(|| hash_bytes(SipHasher::default(), &data));
105 fn bench_bytes_a_16(b: &mut Bencher) {
106 let data = black_box([b' '; 16]);
107 b.iter(|| hash_bytes(SipHasher::default(), &data));
112 fn bench_bytes_b_32(b: &mut Bencher) {
113 let data = black_box([b' '; 32]);
114 b.iter(|| hash_bytes(SipHasher::default(), &data));
119 fn bench_bytes_c_128(b: &mut Bencher) {
120 let data = black_box([b' '; 128]);
121 b.iter(|| hash_bytes(SipHasher::default(), &data));