@@ -11,7 +11,7 @@ extern crate test;
1111
1212use std:: mem:: MaybeUninit ;
1313
14- use ndarray:: ShapeBuilder ;
14+ use ndarray:: { ShapeBuilder , Array3 , Array4 } ;
1515use ndarray:: { arr0, arr1, arr2, azip, s} ;
1616use ndarray:: { Array , Array1 , Array2 , Axis , Ix , Zip } ;
1717use ndarray:: { Ix1 , Ix2 , Ix3 , Ix5 , IxDyn } ;
@@ -998,3 +998,21 @@ fn into_dyn_dyn(bench: &mut test::Bencher) {
998998 let a = a. view ( ) ;
999999 bench. iter ( || a. clone ( ) . into_dyn ( ) ) ;
10001000}
1001+
1002+ #[ bench]
1003+ fn broadcast_same_dim ( bench : & mut test:: Bencher ) {
1004+ let s = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ] ;
1005+ let s = Array4 :: from_shape_vec ( ( 2 , 2 , 3 , 2 ) , s. to_vec ( ) ) . unwrap ( ) ;
1006+ let a = s. slice ( s ! [ .., ..; -1 , ..; 2 , ..] ) ;
1007+ let b = s. slice ( s ! [ .., .., ..; 2 , ..] ) ;
1008+ bench. iter ( || & a + & b) ;
1009+ }
1010+
1011+ #[ bench]
1012+ fn broadcast_one_side ( bench : & mut test:: Bencher ) {
1013+ let s = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ] ;
1014+ let s2 = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
1015+ let a = Array4 :: from_shape_vec ( ( 4 , 1 , 3 , 2 ) , s. to_vec ( ) ) . unwrap ( ) ;
1016+ let b = Array3 :: from_shape_vec ( ( 1 , 3 , 2 ) , s2. to_vec ( ) ) . unwrap ( ) ;
1017+ bench. iter ( || & a + & b) ;
1018+ }
0 commit comments