@@ -258,23 +258,35 @@ fn add_2d_zip(bench: &mut test::Bencher) {
258
258
}
259
259
260
260
#[ bench]
261
- fn add_2d_alloc ( bench : & mut test:: Bencher ) {
261
+ fn add_2d_alloc_plus ( bench : & mut test:: Bencher ) {
262
262
let a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
263
263
let b = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
264
264
bench. iter ( || & a + & b) ;
265
265
}
266
266
267
267
#[ bench]
268
- fn add_2d_zip_alloc ( bench : & mut test:: Bencher ) {
268
+ fn add_2d_alloc_zip_uninit ( bench : & mut test:: Bencher ) {
269
269
let a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
270
270
let b = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
271
271
bench. iter ( || unsafe {
272
272
let mut c = Array :: uninitialized ( a. dim ( ) ) ;
273
- azip ! ( ( & a in & a, & b in & b, c in & mut c) * c = a + b) ;
273
+ azip ! ( ( & a in & a, & b in & b, c in c. raw_view_mut( ) ) unsafe {
274
+ std:: ptr:: write( c, a + b)
275
+ } ) ;
274
276
c
275
277
} ) ;
276
278
}
277
279
280
+ #[ bench]
281
+ fn add_2d_alloc_zip_collect ( bench : & mut test:: Bencher ) {
282
+ let a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
283
+ let b = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
284
+ bench. iter ( || {
285
+ Zip :: from ( & a) . and ( & b) . apply_collect ( |& x, & y| x + y)
286
+ } ) ;
287
+ }
288
+
289
+
278
290
#[ bench]
279
291
fn add_2d_assign_ops ( bench : & mut test:: Bencher ) {
280
292
let mut a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
0 commit comments