@@ -258,23 +258,35 @@ fn add_2d_zip(bench: &mut test::Bencher) {
258258}
259259
260260#[ bench]
261- fn add_2d_alloc ( bench : & mut test:: Bencher ) {
261+ fn add_2d_alloc_plus ( bench : & mut test:: Bencher ) {
262262 let a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
263263 let b = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
264264 bench. iter ( || & a + & b) ;
265265}
266266
267267#[ bench]
268- fn add_2d_zip_alloc ( bench : & mut test:: Bencher ) {
268+ fn add_2d_alloc_zip_uninit ( bench : & mut test:: Bencher ) {
269269 let a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
270270 let b = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
271271 bench. iter ( || unsafe {
272272 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( ) )
274+ std:: ptr:: write( c, a + b)
275+ ) ;
274276 c
275277 } ) ;
276278}
277279
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+
278290#[ bench]
279291fn add_2d_assign_ops ( bench : & mut test:: Bencher ) {
280292 let mut a = Array :: < i32 , _ > :: zeros ( ( ADD2DSZ , ADD2DSZ ) ) ;
0 commit comments