1
- // Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
1
+ // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2
2
// file at the top-level directory of this distribution and at
3
3
// http://rust-lang.org/COPYRIGHT.
4
4
//
8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
+
12
+ use std:: iter:: Iterator ;
13
+ use std:: vec:: Vec ;
14
+ use std:: collections:: BTreeMap ;
15
+ use std:: __rand:: { Rng , thread_rng} ;
16
+ use test:: { Bencher , black_box} ;
17
+
11
18
macro_rules! map_insert_rand_bench {
12
19
( $name: ident, $n: expr, $map: ident) => (
13
20
#[ bench]
14
- pub fn $name( b: & mut :: test:: Bencher ) {
15
- use std:: __rand:: { thread_rng, Rng } ;
16
- use test:: black_box;
17
-
21
+ pub fn $name( b: & mut Bencher ) {
18
22
let n: usize = $n;
19
23
let mut map = $map:: new( ) ;
20
24
// setup
@@ -39,9 +43,7 @@ macro_rules! map_insert_rand_bench {
39
43
macro_rules! map_insert_seq_bench {
40
44
( $name: ident, $n: expr, $map: ident) => (
41
45
#[ bench]
42
- pub fn $name( b: & mut :: test:: Bencher ) {
43
- use test:: black_box;
44
-
46
+ pub fn $name( b: & mut Bencher ) {
45
47
let mut map = $map:: new( ) ;
46
48
let n: usize = $n;
47
49
// setup
@@ -64,12 +66,7 @@ macro_rules! map_insert_seq_bench {
64
66
macro_rules! map_find_rand_bench {
65
67
( $name: ident, $n: expr, $map: ident) => (
66
68
#[ bench]
67
- pub fn $name( b: & mut :: test:: Bencher ) {
68
- use std:: iter:: Iterator ;
69
- use std:: __rand:: { thread_rng, Rng } ;
70
- use std:: vec:: Vec ;
71
- use test:: black_box;
72
-
69
+ pub fn $name( b: & mut Bencher ) {
73
70
let mut map = $map:: new( ) ;
74
71
let n: usize = $n;
75
72
@@ -97,9 +94,7 @@ macro_rules! map_find_rand_bench {
97
94
macro_rules! map_find_seq_bench {
98
95
( $name: ident, $n: expr, $map: ident) => (
99
96
#[ bench]
100
- pub fn $name( b: & mut :: test:: Bencher ) {
101
- use test:: black_box;
102
-
97
+ pub fn $name( b: & mut Bencher ) {
103
98
let mut map = $map:: new( ) ;
104
99
let n: usize = $n;
105
100
@@ -118,3 +113,45 @@ macro_rules! map_find_seq_bench {
118
113
}
119
114
)
120
115
}
116
+
117
+ map_insert_rand_bench ! { insert_rand_100, 100 , BTreeMap }
118
+ map_insert_rand_bench ! { insert_rand_10_000, 10_000 , BTreeMap }
119
+
120
+ map_insert_seq_bench ! { insert_seq_100, 100 , BTreeMap }
121
+ map_insert_seq_bench ! { insert_seq_10_000, 10_000 , BTreeMap }
122
+
123
+ map_find_rand_bench ! { find_rand_100, 100 , BTreeMap }
124
+ map_find_rand_bench ! { find_rand_10_000, 10_000 , BTreeMap }
125
+
126
+ map_find_seq_bench ! { find_seq_100, 100 , BTreeMap }
127
+ map_find_seq_bench ! { find_seq_10_000, 10_000 , BTreeMap }
128
+
129
+ fn bench_iter ( b : & mut Bencher , size : i32 ) {
130
+ let mut map = BTreeMap :: < i32 , i32 > :: new ( ) ;
131
+ let mut rng = thread_rng ( ) ;
132
+
133
+ for _ in 0 ..size {
134
+ map. insert ( rng. gen ( ) , rng. gen ( ) ) ;
135
+ }
136
+
137
+ b. iter ( || {
138
+ for entry in & map {
139
+ black_box ( entry) ;
140
+ }
141
+ } ) ;
142
+ }
143
+
144
+ #[ bench]
145
+ pub fn iter_20 ( b : & mut Bencher ) {
146
+ bench_iter ( b, 20 ) ;
147
+ }
148
+
149
+ #[ bench]
150
+ pub fn iter_1000 ( b : & mut Bencher ) {
151
+ bench_iter ( b, 1000 ) ;
152
+ }
153
+
154
+ #[ bench]
155
+ pub fn iter_100000 ( b : & mut Bencher ) {
156
+ bench_iter ( b, 100000 ) ;
157
+ }
0 commit comments