Skip to content

Commit e407b95

Browse files
committedFeb 7, 2021
Using FnvHasher for all benchmarks
1 parent 596f75f commit e407b95

6 files changed

+22
-26
lines changed
 

‎benches/map_comparison.rs

+10-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::borrow::Borrow;
22
use std::hash::Hash;
3-
use std::collections::{BTreeMap, HashMap};
3+
use std::collections::BTreeMap;
44

55
use rand::prelude::*;
66
use criterion::{
@@ -13,12 +13,12 @@ use criterion::{
1313
measurement::WallTime,
1414
};
1515
use simple_bst::SimpleBSTMap;
16+
// Looking to measure map implementation, not hasher performance so using a faster hasher
17+
use fnv::FnvHashMap as HashMap;
1618

1719
use bst::BSTMap;
1820

19-
trait Map<K, V>: Clone {
20-
fn new() -> Self;
21-
21+
trait Map<K, V>: Default + Clone {
2222
fn len(&self) -> usize;
2323

2424
fn get<Q>(&self, key: &Q) -> Option<&V>
@@ -41,10 +41,6 @@ macro_rules! impl_map {
4141
impl<K: Clone, V: Clone> Map<K, V> for $name<K, V>
4242
where K: $bound $(+ $other_bound)*,
4343
{
44-
fn new() -> Self {
45-
$name::new()
46-
}
47-
4844
fn len(&self) -> usize {
4945
$name::len(self)
5046
}
@@ -128,7 +124,7 @@ fn slice_max<T: Copy + Ord>(data: &[T]) -> T {
128124

129125
/// Runs many consecutive inserts on a map
130126
fn benchmark_inserts<M: Map<i64, usize>>(keys: &Keys, inserts: usize) -> M {
131-
let mut map = M::new();
127+
let mut map = M::default();
132128

133129
for key_i in 0..inserts {
134130
black_box(map.insert(keys.get(key_i as i64), key_i));
@@ -139,7 +135,7 @@ fn benchmark_inserts<M: Map<i64, usize>>(keys: &Keys, inserts: usize) -> M {
139135

140136
/// Setup function for benchmark_gets
141137
fn setup_benchmark_gets<M: Map<i64, usize>>(keys: &Keys, gets: usize) -> M {
142-
let mut map = M::new();
138+
let mut map = M::default();
143139

144140
for key_i in 0..gets {
145141
black_box(map.insert(keys.get(key_i as i64), key_i));
@@ -161,7 +157,7 @@ fn benchmark_gets<M: Map<i64, usize>>(keys: &Keys, map: &mut M, gets: usize) {
161157

162158
/// Setup function for benchmark_removes
163159
fn setup_benchmark_removes<M: Map<i64, usize>>(keys: &Keys, removes: usize) -> M {
164-
let mut map = M::new();
160+
let mut map = M::default();
165161

166162
for key_i in 0..removes {
167163
black_box(map.insert(keys.get(key_i as i64), key_i));
@@ -188,7 +184,7 @@ fn benchmark_map_ops<M: Map<i64, usize>>(keys: &Keys, steps: usize) -> M {
188184
const MAX_GETS: usize = 3;
189185
const MAX_REMOVES: usize = 2;
190186

191-
let mut map = M::new();
187+
let mut map = M::default();
192188

193189
let mut key_i = 0;
194190
for i in 0..steps {
@@ -232,7 +228,7 @@ fn benchmark_map_ops<M: Map<i64, usize>>(keys: &Keys, steps: usize) -> M {
232228

233229
/// Runs many consecutive inserts on a map
234230
fn benchmark_inserts_multi<M: Map<i64, usize>>(keys: &Keys, inserts: usize, n: usize) -> Vec<M> {
235-
let mut maps = vec![M::new(); n];
231+
let mut maps = vec![M::default(); n];
236232

237233
for key_i in 0..inserts {
238234
for map in &mut maps {
@@ -245,7 +241,7 @@ fn benchmark_inserts_multi<M: Map<i64, usize>>(keys: &Keys, inserts: usize, n: u
245241

246242
/// Setup function for benchmark_gets
247243
fn setup_benchmark_gets_multi<M: Map<i64, usize>>(keys: &Keys, gets: usize, n: usize) -> Vec<M> {
248-
let mut maps = vec![M::new(); n];
244+
let mut maps = vec![M::default(); n];
249245

250246
for key_i in 0..gets {
251247
for map in &mut maps {

‎benches/movie_requests.rs

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use criterion::{
1919
measurement::WallTime,
2020
};
2121
use simple_bst::SimpleBSTMap;
22+
// Looking to measure map implementation, not hasher performance so using a faster hasher
2223
use fnv::FnvHashMap as HashMap;
2324

2425
use bst::BSTMap;

‎benches/name_resolution.rs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use criterion::{
2121
measurement::WallTime,
2222
};
2323
use simple_bst::SimpleBSTMap;
24+
// Looking to measure map implementation, not hasher performance so using a faster hasher
2425
use fnv::FnvHashMap as HashMap;
2526

2627
use bst::BSTMap;

‎benches/set_comparison.rs

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
use std::borrow::Borrow;
22
use std::hash::Hash;
3-
use std::collections::{BTreeSet, HashSet};
3+
use std::collections::BTreeSet;
44

55
use rand::prelude::*;
66
use criterion::{black_box, criterion_group, criterion_main, Criterion, BenchmarkId};
77
use simple_bst::SimpleBSTSet;
8+
// Looking to measure set implementation, not hasher performance so using a faster hasher
9+
use fnv::FnvHashSet as HashSet;
810

911
use bst::BSTSet;
1012

11-
trait Set<T> {
12-
fn new() -> Self;
13-
13+
trait Set<T>: Default {
1414
fn len(&self) -> usize;
1515

1616
fn contains<Q>(&self, value: &Q) -> bool
@@ -33,10 +33,6 @@ macro_rules! impl_set {
3333
impl<T> Set<T> for $name<T>
3434
where T: $bound $(+ $other_bound)*,
3535
{
36-
fn new() -> Self {
37-
$name::new()
38-
}
39-
4036
fn len(&self) -> usize {
4137
$name::len(self)
4238
}
@@ -120,7 +116,7 @@ fn slice_max<T: Copy + Ord>(data: &[T]) -> T {
120116

121117
/// Runs many consecutive inserts on a set
122118
fn benchmark_inserts<M: Set<i64>>(values: &Values, inserts: usize) -> M {
123-
let mut set = M::new();
119+
let mut set = M::default();
124120

125121
for value_i in 0..inserts {
126122
black_box(set.insert(values.get(value_i as i64)));
@@ -131,7 +127,7 @@ fn benchmark_inserts<M: Set<i64>>(values: &Values, inserts: usize) -> M {
131127

132128
/// Setup function for benchmark_gets
133129
fn setup_benchmark_gets<M: Set<i64>>(values: &Values, gets: usize) -> M {
134-
let mut set = M::new();
130+
let mut set = M::default();
135131

136132
for value_i in 0..gets {
137133
black_box(set.insert(values.get(value_i as i64)));
@@ -153,7 +149,7 @@ fn benchmark_gets<M: Set<i64>>(values: &Values, set: &mut M, gets: usize) {
153149

154150
/// Setup function for benchmark_removes
155151
fn setup_benchmark_removes<M: Set<i64>>(values: &Values, removes: usize) -> M {
156-
let mut set = M::new();
152+
let mut set = M::default();
157153

158154
for value_i in 0..removes {
159155
black_box(set.insert(values.get(value_i as i64)));
@@ -180,7 +176,7 @@ fn benchmark_set_ops<M: Set<i64>>(values: &Values, steps: usize) -> M {
180176
const MAX_GETS: usize = 3;
181177
const MAX_REMOVES: usize = 2;
182178

183-
let mut set = M::new();
179+
let mut set = M::default();
184180

185181
let mut value_i = 0;
186182
for i in 0..steps {

‎benches/two_sum.rs

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use criterion::{
1717
measurement::WallTime,
1818
};
1919
use simple_bst::SimpleBSTMap;
20+
// Looking to measure map implementation, not hasher performance so using a faster hasher
2021
use fnv::FnvHashMap as HashMap;
2122

2223
use bst::BSTMap;

‎benches/web_server.rs

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use criterion::{
2222
measurement::WallTime,
2323
};
2424
use simple_bst::SimpleBSTMap;
25+
// Looking to measure map implementation, not hasher performance so using a faster hasher
2526
use fnv::FnvHashMap as HashMap;
2627

2728
use bst::BSTMap;

0 commit comments

Comments
 (0)
Please sign in to comment.