File tree 1 file changed +17
-3
lines changed
1 file changed +17
-3
lines changed Original file line number Diff line number Diff line change 2
2
extern crate arrayvec;
3
3
#[ macro_use] extern crate bencher;
4
4
5
+ use std:: io:: Write ;
6
+
5
7
use arrayvec:: ArrayVec ;
6
8
7
9
use bencher:: Bencher ;
@@ -23,7 +25,7 @@ fn extend_with_range(b: &mut Bencher) {
23
25
let cap = v. capacity ( ) ;
24
26
b. iter ( || {
25
27
v. clear ( ) ;
26
- v. extend ( ( 0 ..cap) . map ( |x| x as _ ) ) ;
28
+ v. extend ( ( 0 ..black_box ( cap) ) . map ( |x| x as _ ) ) ;
27
29
v[ 0 ]
28
30
} ) ;
29
31
b. bytes = v. capacity ( ) as u64 ;
@@ -34,11 +36,23 @@ fn extend_with_slice(b: &mut Bencher) {
34
36
let data = [ 1 ; 512 ] ;
35
37
b. iter ( || {
36
38
v. clear ( ) ;
37
- v. extend ( black_box ( data. iter ( ) ) . cloned ( ) ) ;
39
+ v. extend ( data. iter ( ) . cloned ( ) ) ;
40
+ v[ 0 ]
41
+ } ) ;
42
+ b. bytes = v. capacity ( ) as u64 ;
43
+ }
44
+
45
+ fn extend_with_write ( b : & mut Bencher ) {
46
+ let mut v = ArrayVec :: < [ u8 ; 512 ] > :: new ( ) ;
47
+ let data = [ 1 ; 512 ] ;
48
+ b. iter ( || {
49
+ v. clear ( ) ;
50
+ v. write ( & black_box ( & data) [ ..] ) . ok ( ) ;
38
51
v[ 0 ]
39
52
} ) ;
40
53
b. bytes = v. capacity ( ) as u64 ;
41
54
}
42
55
43
- benchmark_group ! ( benches, extend_with_constant, extend_with_range, extend_with_slice) ;
56
+ benchmark_group ! ( benches, extend_with_constant, extend_with_range,
57
+ extend_with_slice, extend_with_write) ;
44
58
benchmark_main ! ( benches) ;
You can’t perform that action at this time.
0 commit comments