]> git.lizzy.rs Git - rust.git/blob - library/core/benches/hash/sip.rs
Rollup merge of #102195 - wesleywiser:copyright2, r=Mark-Simulacrum,joshtriplett
[rust.git] / library / core / benches / hash / sip.rs
1 #![allow(deprecated)]
2
3 use core::hash::*;
4 use test::{black_box, Bencher};
5
6 fn hash_bytes<H: Hasher>(mut s: H, x: &[u8]) -> u64 {
7     Hasher::write(&mut s, x);
8     s.finish()
9 }
10
11 fn hash_with<H: Hasher, T: Hash>(mut st: H, x: &T) -> u64 {
12     x.hash(&mut st);
13     st.finish()
14 }
15
16 fn hash<T: Hash>(x: &T) -> u64 {
17     hash_with(SipHasher::new(), x)
18 }
19
20 #[bench]
21 fn bench_str_under_8_bytes(b: &mut Bencher) {
22     let s = "foo";
23     b.iter(|| {
24         assert_eq!(hash(&s), 16262950014981195938);
25     })
26 }
27
28 #[bench]
29 fn bench_str_of_8_bytes(b: &mut Bencher) {
30     let s = "foobar78";
31     b.iter(|| {
32         assert_eq!(hash(&s), 4898293253460910787);
33     })
34 }
35
36 #[bench]
37 fn bench_str_over_8_bytes(b: &mut Bencher) {
38     let s = "foobarbaz0";
39     b.iter(|| {
40         assert_eq!(hash(&s), 10581415515220175264);
41     })
42 }
43
44 #[bench]
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.";
52     b.iter(|| {
53         assert_eq!(hash(&s), 17717065544121360093);
54     })
55 }
56
57 #[bench]
58 fn bench_u32(b: &mut Bencher) {
59     let u = 162629500u32;
60     let u = black_box(u);
61     b.iter(|| hash(&u));
62     b.bytes = 8;
63 }
64
65 #[bench]
66 fn bench_u32_keyed(b: &mut Bencher) {
67     let u = 162629500u32;
68     let u = black_box(u);
69     let k1 = black_box(0x1);
70     let k2 = black_box(0x2);
71     b.iter(|| hash_with(SipHasher::new_with_keys(k1, k2), &u));
72     b.bytes = 8;
73 }
74
75 #[bench]
76 fn bench_u64(b: &mut Bencher) {
77     let u = 16262950014981195938u64;
78     let u = black_box(u);
79     b.iter(|| hash(&u));
80     b.bytes = 8;
81 }
82
83 #[bench]
84 fn bench_bytes_4(b: &mut Bencher) {
85     let data = black_box([b' '; 4]);
86     b.iter(|| hash_bytes(SipHasher::default(), &data));
87     b.bytes = 4;
88 }
89
90 #[bench]
91 fn bench_bytes_7(b: &mut Bencher) {
92     let data = black_box([b' '; 7]);
93     b.iter(|| hash_bytes(SipHasher::default(), &data));
94     b.bytes = 7;
95 }
96
97 #[bench]
98 fn bench_bytes_8(b: &mut Bencher) {
99     let data = black_box([b' '; 8]);
100     b.iter(|| hash_bytes(SipHasher::default(), &data));
101     b.bytes = 8;
102 }
103
104 #[bench]
105 fn bench_bytes_a_16(b: &mut Bencher) {
106     let data = black_box([b' '; 16]);
107     b.iter(|| hash_bytes(SipHasher::default(), &data));
108     b.bytes = 16;
109 }
110
111 #[bench]
112 fn bench_bytes_b_32(b: &mut Bencher) {
113     let data = black_box([b' '; 32]);
114     b.iter(|| hash_bytes(SipHasher::default(), &data));
115     b.bytes = 32;
116 }
117
118 #[bench]
119 fn bench_bytes_c_128(b: &mut Bencher) {
120     let data = black_box([b' '; 128]);
121     b.iter(|| hash_bytes(SipHasher::default(), &data));
122     b.bytes = 128;
123 }