@@ -11,7 +11,6 @@ use smallvec::SmallVec;
11
11
const VEC_SIZE : usize = 16 ;
12
12
const SPILLED_SIZE : usize = 100 ;
13
13
14
-
15
14
trait Vector < T > : for < ' a > From < & ' a [ T ] > + Extend < T > {
16
15
fn new ( ) -> Self ;
17
16
fn push ( & mut self , val : T ) ;
@@ -114,6 +113,8 @@ make_benches! {
114
113
bench_remove_small => gen_remove( VEC_SIZE as _) ,
115
114
bench_extend => gen_extend( SPILLED_SIZE as _) ,
116
115
bench_extend_small => gen_extend( VEC_SIZE as _) ,
116
+ bench_extend_filtered => gen_extend_filtered( SPILLED_SIZE as _) ,
117
+ bench_extend_filtered_small => gen_extend_filtered( VEC_SIZE as _) ,
117
118
bench_from_iter => gen_from_iter( SPILLED_SIZE as _) ,
118
119
bench_from_iter_small => gen_from_iter( VEC_SIZE as _) ,
119
120
bench_from_slice => gen_from_slice( SPILLED_SIZE as _) ,
@@ -138,6 +139,8 @@ make_benches! {
138
139
bench_remove_vec_small => gen_remove( VEC_SIZE as _) ,
139
140
bench_extend_vec => gen_extend( SPILLED_SIZE as _) ,
140
141
bench_extend_vec_small => gen_extend( VEC_SIZE as _) ,
142
+ bench_extend_vec_filtered => gen_extend_filtered( SPILLED_SIZE as _) ,
143
+ bench_extend_vec_filtered_small => gen_extend_filtered( VEC_SIZE as _) ,
141
144
bench_from_iter_vec => gen_from_iter( SPILLED_SIZE as _) ,
142
145
bench_from_iter_vec_small => gen_from_iter( VEC_SIZE as _) ,
143
146
bench_from_slice_vec => gen_from_slice( SPILLED_SIZE as _) ,
@@ -221,6 +224,14 @@ fn gen_extend<V: Vector<u64>>(n: u64, b: &mut Bencher) {
221
224
} ) ;
222
225
}
223
226
227
+ fn gen_extend_filtered < V : Vector < u64 > > ( n : u64 , b : & mut Bencher ) {
228
+ b. iter ( || {
229
+ let mut vec = V :: new ( ) ;
230
+ vec. extend ( ( 0 ..n) . filter ( |i| i % 2 == 0 ) ) ;
231
+ vec
232
+ } ) ;
233
+ }
234
+
224
235
fn gen_from_iter < V : Vector < u64 > > ( n : u64 , b : & mut Bencher ) {
225
236
let v: Vec < u64 > = ( 0 ..n) . collect ( ) ;
226
237
b. iter ( || {
0 commit comments