@@ -4,23 +4,13 @@ use test::{black_box, Bencher};
4
4
5
5
#[ bench]
6
6
fn bench_new ( b : & mut Bencher ) {
7
- b. iter ( || {
8
- let v: Vec < u32 > = Vec :: new ( ) ;
9
- assert_eq ! ( v. len( ) , 0 ) ;
10
- assert_eq ! ( v. capacity( ) , 0 ) ;
11
- v
12
- } )
7
+ b. iter ( || Vec :: < u32 > :: new ( ) )
13
8
}
14
9
15
10
fn do_bench_with_capacity ( b : & mut Bencher , src_len : usize ) {
16
11
b. bytes = src_len as u64 ;
17
12
18
- b. iter ( || {
19
- let v: Vec < u32 > = Vec :: with_capacity ( src_len) ;
20
- assert_eq ! ( v. len( ) , 0 ) ;
21
- assert_eq ! ( v. capacity( ) , src_len) ;
22
- v
23
- } )
13
+ b. iter ( || Vec :: < u32 > :: with_capacity ( src_len) )
24
14
}
25
15
26
16
#[ bench]
@@ -46,12 +36,7 @@ fn bench_with_capacity_1000(b: &mut Bencher) {
46
36
fn do_bench_from_fn ( b : & mut Bencher , src_len : usize ) {
47
37
b. bytes = src_len as u64 ;
48
38
49
- b. iter ( || {
50
- let dst = ( 0 ..src_len) . collect :: < Vec < _ > > ( ) ;
51
- assert_eq ! ( dst. len( ) , src_len) ;
52
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
53
- dst
54
- } )
39
+ b. iter ( || ( 0 ..src_len) . collect :: < Vec < _ > > ( ) )
55
40
}
56
41
57
42
#[ bench]
@@ -77,12 +62,7 @@ fn bench_from_fn_1000(b: &mut Bencher) {
77
62
fn do_bench_from_elem ( b : & mut Bencher , src_len : usize ) {
78
63
b. bytes = src_len as u64 ;
79
64
80
- b. iter ( || {
81
- let dst: Vec < usize > = repeat ( 5 ) . take ( src_len) . collect ( ) ;
82
- assert_eq ! ( dst. len( ) , src_len) ;
83
- assert ! ( dst. iter( ) . all( |x| * x == 5 ) ) ;
84
- dst
85
- } )
65
+ b. iter ( || repeat ( 5 ) . take ( src_len) . collect :: < Vec < usize > > ( ) )
86
66
}
87
67
88
68
#[ bench]
@@ -110,12 +90,7 @@ fn do_bench_from_slice(b: &mut Bencher, src_len: usize) {
110
90
111
91
b. bytes = src_len as u64 ;
112
92
113
- b. iter ( || {
114
- let dst = src. clone ( ) [ ..] . to_vec ( ) ;
115
- assert_eq ! ( dst. len( ) , src_len) ;
116
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
117
- dst
118
- } ) ;
93
+ b. iter ( || src. as_slice ( ) . to_vec ( ) ) ;
119
94
}
120
95
121
96
#[ bench]
@@ -144,9 +119,7 @@ fn do_bench_from_iter(b: &mut Bencher, src_len: usize) {
144
119
b. bytes = src_len as u64 ;
145
120
146
121
b. iter ( || {
147
- let dst: Vec < _ > = FromIterator :: from_iter ( src. clone ( ) ) ;
148
- assert_eq ! ( dst. len( ) , src_len) ;
149
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
122
+ let dst: Vec < _ > = FromIterator :: from_iter ( src. iter ( ) . cloned ( ) ) ;
150
123
dst
151
124
} ) ;
152
125
}
@@ -180,8 +153,6 @@ fn do_bench_extend(b: &mut Bencher, dst_len: usize, src_len: usize) {
180
153
b. iter ( || {
181
154
let mut dst = dst. clone ( ) ;
182
155
dst. extend ( src. clone ( ) ) ;
183
- assert_eq ! ( dst. len( ) , dst_len + src_len) ;
184
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
185
156
dst
186
157
} ) ;
187
158
}
@@ -230,8 +201,6 @@ fn do_bench_extend_from_slice(b: &mut Bencher, dst_len: usize, src_len: usize) {
230
201
b. iter ( || {
231
202
let mut dst = dst. clone ( ) ;
232
203
dst. extend_from_slice ( & src) ;
233
- assert_eq ! ( dst. len( ) , dst_len + src_len) ;
234
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
235
204
dst
236
205
} ) ;
237
206
}
@@ -290,12 +259,7 @@ fn do_bench_clone(b: &mut Bencher, src_len: usize) {
290
259
291
260
b. bytes = src_len as u64 ;
292
261
293
- b. iter ( || {
294
- let dst = src. clone ( ) ;
295
- assert_eq ! ( dst. len( ) , src_len) ;
296
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | i == * x) ) ;
297
- dst
298
- } ) ;
262
+ b. iter ( || src. clone ( ) ) ;
299
263
}
300
264
301
265
#[ bench]
@@ -329,8 +293,7 @@ fn do_bench_clone_from(b: &mut Bencher, times: usize, dst_len: usize, src_len: u
329
293
330
294
for _ in 0 ..times {
331
295
dst. clone_from ( & src) ;
332
- assert_eq ! ( dst. len( ) , src_len) ;
333
- assert ! ( dst. iter( ) . enumerate( ) . all( |( i, x) | dst_len + i == * x) ) ;
296
+ dst = black_box ( dst) ;
334
297
}
335
298
dst
336
299
} ) ;
@@ -463,11 +426,10 @@ macro_rules! bench_in_place {
463
426
fn $fname( b: & mut Bencher ) {
464
427
b. iter( || {
465
428
let src: Vec <$type> = black_box( vec![ $init; $count] ) ;
466
- let mut sink = src. into_iter( )
429
+ src. into_iter( )
467
430
. enumerate( )
468
431
. map( |( idx, e) | idx as $type ^ e)
469
- . collect:: <Vec <$type>>( ) ;
470
- black_box( sink. as_mut_ptr( ) )
432
+ . collect:: <Vec <$type>>( )
471
433
} ) ;
472
434
}
473
435
) +
@@ -527,7 +489,6 @@ fn bench_in_place_zip_recycle(b: &mut Bencher) {
527
489
. enumerate ( )
528
490
. map ( |( i, ( d, s) ) | d. wrapping_add ( i as u8 ) ^ s)
529
491
. collect :: < Vec < _ > > ( ) ;
530
- assert_eq ! ( mangled. len( ) , 1000 ) ;
531
492
data = black_box ( mangled) ;
532
493
} ) ;
533
494
}
@@ -614,23 +575,6 @@ fn bench_nest_chain_chain_collect(b: &mut Bencher) {
614
575
} ) ;
615
576
}
616
577
617
- pub fn example_plain_slow ( l : & [ u32 ] ) -> Vec < u32 > {
618
- let mut result = Vec :: with_capacity ( l. len ( ) ) ;
619
- result. extend ( l. iter ( ) . rev ( ) ) ;
620
- result
621
- }
622
-
623
- pub fn map_fast ( l : & [ ( u32 , u32 ) ] ) -> Vec < u32 > {
624
- let mut result = Vec :: with_capacity ( l. len ( ) ) ;
625
- for i in 0 ..l. len ( ) {
626
- unsafe {
627
- * result. get_unchecked_mut ( i) = l[ i] . 0 ;
628
- result. set_len ( i) ;
629
- }
630
- }
631
- result
632
- }
633
-
634
578
#[ bench]
635
579
fn bench_range_map_collect ( b : & mut Bencher ) {
636
580
b. iter ( || ( 0 ..LEN ) . map ( |_| u32:: default ( ) ) . collect :: < Vec < _ > > ( ) ) ;
@@ -669,7 +613,11 @@ fn bench_rev_1(b: &mut Bencher) {
669
613
#[ bench]
670
614
fn bench_rev_2 ( b : & mut Bencher ) {
671
615
let data = black_box ( [ 0 ; LEN ] ) ;
672
- b. iter ( || example_plain_slow ( & data) ) ;
616
+ b. iter ( || {
617
+ let mut v = Vec :: < u32 > :: with_capacity ( data. len ( ) ) ;
618
+ v. extend ( data. iter ( ) . rev ( ) ) ;
619
+ v
620
+ } ) ;
673
621
}
674
622
675
623
#[ bench]
@@ -685,7 +633,16 @@ fn bench_map_regular(b: &mut Bencher) {
685
633
#[ bench]
686
634
fn bench_map_fast ( b : & mut Bencher ) {
687
635
let data = black_box ( [ ( 0 , 0 ) ; LEN ] ) ;
688
- b. iter ( || map_fast ( & data) ) ;
636
+ b. iter ( || {
637
+ let mut result = Vec :: with_capacity ( data. len ( ) ) ;
638
+ for i in 0 ..data. len ( ) {
639
+ unsafe {
640
+ * result. get_unchecked_mut ( i) = data[ i] . 0 ;
641
+ result. set_len ( i) ;
642
+ }
643
+ }
644
+ result
645
+ } ) ;
689
646
}
690
647
691
648
fn random_sorted_fill ( mut seed : u32 , buf : & mut [ u32 ] ) {
0 commit comments