]>
git.proxmox.com Git - rustc.git/blob - vendor/ordermap/benches/faststring.rs
4 extern crate lazy_static
;
10 use ordermap
::OrderMap
;
12 use std
::collections
::HashMap
;
13 use std
::iter
::FromIterator
;
15 use rand
::{weak_rng, Rng}
;
17 use std
::hash
::{Hash, Hasher}
;
19 use std
::borrow
::Borrow
;
23 #[derive(PartialEq, Eq, Copy, Clone)]
24 pub struct OneShot
<T
: ?Sized
>(pub T
);
26 impl Hash
for OneShot
<str>
28 fn hash
<H
: Hasher
>(&self, h
: &mut H
) {
29 h
.write(self.0.as_bytes())
33 impl<'a
, S
> From
<&'a S
> for &'a OneShot
<str>
36 fn from(s
: &'a S
) -> Self {
37 let s
: &str = s
.as_ref();
44 impl Hash
for OneShot
<String
>
46 fn hash
<H
: Hasher
>(&self, h
: &mut H
) {
47 h
.write(self.0.as_bytes())
51 impl Borrow
<OneShot
<str>> for OneShot
<String
>
53 fn borrow(&self) -> &OneShot
<str> {
54 <&OneShot
<str>>::from(&self.0)
58 impl<T
> Deref
for OneShot
<T
>
61 fn deref(&self) -> &T
{
67 fn shuffled_keys
<I
>(iter
: I
) -> Vec
<I
::Item
>
70 let mut v
= Vec
::from_iter(iter
);
71 let mut rng
= weak_rng();
78 fn insert_hashmap_string_10_000(b
: &mut Bencher
) {
81 let mut map
= HashMap
::with_capacity(c
);
83 map
.insert(x
.to_string(), ());
90 fn insert_hashmap_string_oneshot_10_000(b
: &mut Bencher
) {
93 let mut map
= HashMap
::with_capacity(c
);
95 map
.insert(OneShot(x
.to_string()), ());
102 fn insert_orderedmap_string_10_000(b
: &mut Bencher
) {
105 let mut map
= OrderMap
::with_capacity(c
);
107 map
.insert(x
.to_string(), ());
114 fn lookup_hashmap_10_000_exist_string(b
: &mut Bencher
) {
116 let mut map
= HashMap
::with_capacity(c
);
117 let keys
= shuffled_keys(0..c
);
119 map
.insert(key
.to_string(), 1);
121 let lookups
= (5000..c
).map(|x
| x
.to_string()).collect
::<Vec
<_
>>();
124 for key
in &lookups
{
125 found
+= map
.get(key
).is_some() as i32;
132 fn lookup_hashmap_10_000_exist_string_oneshot(b
: &mut Bencher
) {
134 let mut map
= HashMap
::with_capacity(c
);
135 let keys
= shuffled_keys(0..c
);
137 map
.insert(OneShot(key
.to_string()), 1);
139 let lookups
= (5000..c
).map(|x
| OneShot(x
.to_string())).collect
::<Vec
<_
>>();
142 for key
in &lookups
{
143 found
+= map
.get(key
).is_some() as i32;
150 fn lookup_ordermap_10_000_exist_string(b
: &mut Bencher
) {
152 let mut map
= OrderMap
::with_capacity(c
);
153 let keys
= shuffled_keys(0..c
);
155 map
.insert(key
.to_string(), 1);
157 let lookups
= (5000..c
).map(|x
| x
.to_string()).collect
::<Vec
<_
>>();
160 for key
in &lookups
{
161 found
+= map
.get(key
).is_some() as i32;
168 fn lookup_ordermap_10_000_exist_string_oneshot(b
: &mut Bencher
) {
170 let mut map
= OrderMap
::with_capacity(c
);
171 let keys
= shuffled_keys(0..c
);
173 map
.insert(OneShot(key
.to_string()), 1);
175 let lookups
= (5000..c
).map(|x
| OneShot(x
.to_string())).collect
::<Vec
<_
>>();
178 for key
in &lookups
{
179 found
+= map
.get(key
).is_some() as i32;