@@ -54,6 +54,50 @@ macro_rules! map_insert_seq_bench {
54
54
} ;
55
55
}
56
56
57
+ macro_rules! map_from_iter_rand_bench {
58
+ ( $name: ident, $n: expr, $map: ident) => {
59
+ #[ bench]
60
+ pub fn $name( b: & mut Bencher ) {
61
+ let n: usize = $n;
62
+ // setup
63
+ let mut rng = thread_rng( ) ;
64
+ let mut vec = Vec :: with_capacity( n) ;
65
+
66
+ for _ in 0 ..n {
67
+ let i = rng. gen :: <usize >( ) % n;
68
+ vec. push( ( i, i) ) ;
69
+ }
70
+
71
+ // measure
72
+ b. iter( || {
73
+ let map: $map<_, _> = vec. iter( ) . copied( ) . collect( ) ;
74
+ black_box( map) ;
75
+ } ) ;
76
+ }
77
+ } ;
78
+ }
79
+
80
+ macro_rules! map_from_iter_seq_bench {
81
+ ( $name: ident, $n: expr, $map: ident) => {
82
+ #[ bench]
83
+ pub fn $name( b: & mut Bencher ) {
84
+ let n: usize = $n;
85
+ // setup
86
+ let mut vec = Vec :: with_capacity( n) ;
87
+
88
+ for i in 0 ..n {
89
+ vec. push( ( i, i) ) ;
90
+ }
91
+
92
+ // measure
93
+ b. iter( || {
94
+ let map: $map<_, _> = vec. iter( ) . copied( ) . collect( ) ;
95
+ black_box( map) ;
96
+ } ) ;
97
+ }
98
+ } ;
99
+ }
100
+
57
101
macro_rules! map_find_rand_bench {
58
102
( $name: ident, $n: expr, $map: ident) => {
59
103
#[ bench]
@@ -111,6 +155,12 @@ map_insert_rand_bench! {insert_rand_10_000, 10_000, BTreeMap}
111
155
map_insert_seq_bench ! { insert_seq_100, 100 , BTreeMap }
112
156
map_insert_seq_bench ! { insert_seq_10_000, 10_000 , BTreeMap }
113
157
158
+ map_from_iter_rand_bench ! { from_iter_rand_100, 100 , BTreeMap }
159
+ map_from_iter_rand_bench ! { from_iter_rand_10_000, 10_000 , BTreeMap }
160
+
161
+ map_from_iter_seq_bench ! { from_iter_seq_100, 100 , BTreeMap }
162
+ map_from_iter_seq_bench ! { from_iter_seq_10_000, 10_000 , BTreeMap }
163
+
114
164
map_find_rand_bench ! { find_rand_100, 100 , BTreeMap }
115
165
map_find_rand_bench ! { find_rand_10_000, 10_000 , BTreeMap }
116
166
0 commit comments