@@ -54,6 +54,50 @@ macro_rules! map_insert_seq_bench {
5454 } ;
5555}
5656
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+
57101macro_rules! map_find_rand_bench {
58102 ( $name: ident, $n: expr, $map: ident) => {
59103 #[ bench]
@@ -111,6 +155,12 @@ map_insert_rand_bench! {insert_rand_10_000, 10_000, BTreeMap}
111155map_insert_seq_bench ! { insert_seq_100, 100 , BTreeMap }
112156map_insert_seq_bench ! { insert_seq_10_000, 10_000 , BTreeMap }
113157
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+
114164map_find_rand_bench ! { find_rand_100, 100 , BTreeMap }
115165map_find_rand_bench ! { find_rand_10_000, 10_000 , BTreeMap }
116166
0 commit comments