@@ -11,7 +11,7 @@ extern crate test;
11
11
12
12
use std:: mem:: MaybeUninit ;
13
13
14
- use ndarray:: ShapeBuilder ;
14
+ use ndarray:: { ShapeBuilder , Array3 , Array4 } ;
15
15
use ndarray:: { arr0, arr1, arr2, azip, s} ;
16
16
use ndarray:: { Array , Array1 , Array2 , Axis , Ix , Zip } ;
17
17
use ndarray:: { Ix1 , Ix2 , Ix3 , Ix5 , IxDyn } ;
@@ -998,3 +998,21 @@ fn into_dyn_dyn(bench: &mut test::Bencher) {
998
998
let a = a. view ( ) ;
999
999
bench. iter ( || a. clone ( ) . into_dyn ( ) ) ;
1000
1000
}
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