1- // Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
1+ // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
22// file at the top-level directory of this distribution and at
33// http://rust-lang.org/COPYRIGHT.
44//
88// option. This file may not be copied, modified, or distributed
99// except according to those terms.
1010
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+
1118macro_rules! map_insert_rand_bench {
1219 ( $name: ident, $n: expr, $map: ident) => (
1320 #[ 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 ) {
1822 let n: usize = $n;
1923 let mut map = $map:: new( ) ;
2024 // setup
@@ -39,9 +43,7 @@ macro_rules! map_insert_rand_bench {
3943macro_rules! map_insert_seq_bench {
4044 ( $name: ident, $n: expr, $map: ident) => (
4145 #[ bench]
42- pub fn $name( b: & mut :: test:: Bencher ) {
43- use test:: black_box;
44-
46+ pub fn $name( b: & mut Bencher ) {
4547 let mut map = $map:: new( ) ;
4648 let n: usize = $n;
4749 // setup
@@ -64,12 +66,7 @@ macro_rules! map_insert_seq_bench {
6466macro_rules! map_find_rand_bench {
6567 ( $name: ident, $n: expr, $map: ident) => (
6668 #[ 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 ) {
7370 let mut map = $map:: new( ) ;
7471 let n: usize = $n;
7572
@@ -97,9 +94,7 @@ macro_rules! map_find_rand_bench {
9794macro_rules! map_find_seq_bench {
9895 ( $name: ident, $n: expr, $map: ident) => (
9996 #[ bench]
100- pub fn $name( b: & mut :: test:: Bencher ) {
101- use test:: black_box;
102-
97+ pub fn $name( b: & mut Bencher ) {
10398 let mut map = $map:: new( ) ;
10499 let n: usize = $n;
105100
@@ -118,3 +113,45 @@ macro_rules! map_find_seq_bench {
118113 }
119114 )
120115}
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