@@ -96,6 +96,8 @@ make_benches! {
96
96
SmallVec <[ u64 ; VEC_SIZE ] > {
97
97
bench_push => gen_push( SPILLED_SIZE as _) ,
98
98
bench_push_small => gen_push( VEC_SIZE as _) ,
99
+ bench_insert_push => gen_insert_push( SPILLED_SIZE as _) ,
100
+ bench_insert_push_small => gen_insert_push( VEC_SIZE as _) ,
99
101
bench_insert => gen_insert( SPILLED_SIZE as _) ,
100
102
bench_insert_small => gen_insert( VEC_SIZE as _) ,
101
103
bench_remove => gen_remove( SPILLED_SIZE as _) ,
@@ -118,6 +120,8 @@ make_benches! {
118
120
Vec <u64 > {
119
121
bench_push_vec => gen_push( SPILLED_SIZE as _) ,
120
122
bench_push_vec_small => gen_push( VEC_SIZE as _) ,
123
+ bench_insert_push_vec => gen_insert_push( SPILLED_SIZE as _) ,
124
+ bench_insert_push_vec_small => gen_insert_push( VEC_SIZE as _) ,
121
125
bench_insert_vec => gen_insert( SPILLED_SIZE as _) ,
122
126
bench_insert_vec_small => gen_insert( VEC_SIZE as _) ,
123
127
bench_remove_vec => gen_remove( SPILLED_SIZE as _) ,
@@ -151,6 +155,21 @@ fn gen_push<V: Vector<u64>>(n: u64, b: &mut Bencher) {
151
155
} ) ;
152
156
}
153
157
158
+ fn gen_insert_push < V : Vector < u64 > > ( n : u64 , b : & mut Bencher ) {
159
+ #[ inline( never) ]
160
+ fn insert_push_noinline < V : Vector < u64 > > ( vec : & mut V , x : u64 ) {
161
+ vec. insert ( x as usize , x) ;
162
+ }
163
+
164
+ b. iter ( || {
165
+ let mut vec = V :: new ( ) ;
166
+ for x in 0 ..n {
167
+ insert_push_noinline ( & mut vec, x) ;
168
+ }
169
+ vec
170
+ } ) ;
171
+ }
172
+
154
173
fn gen_insert < V : Vector < u64 > > ( n : u64 , b : & mut Bencher ) {
155
174
#[ inline( never) ]
156
175
fn insert_noinline < V : Vector < u64 > > ( vec : & mut V , p : usize , x : u64 ) {
0 commit comments