Skip to content

Commit b181f32

Browse files
committed
TEST: Add iteration and sum (fold) benchmarks for row/col matrices
This is special for arrays of shape 1 x n or n x 1; add iterator and iterator sum (fold) benchmarks.
1 parent b0f9669 commit b181f32

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

benches/iter.rs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,76 @@ fn iter_filter_sum_2d_stride_f32(bench: &mut Bencher) {
7474
bench.iter(|| b.iter().filter(|&&x| x < 75.).sum::<f32>());
7575
}
7676

77+
#[bench]
78+
fn iter_sum_2d_row_matrix(bench: &mut Bencher) {
79+
let a = Array::from_iter(0i32..64 * 64);
80+
let v = a.view().insert_axis(Axis(1));
81+
bench.iter(|| {
82+
let mut s = 0;
83+
for &elt in v.iter() {
84+
s += elt;
85+
}
86+
s
87+
});
88+
}
89+
90+
#[bench]
91+
fn iter_sum_2d_row_matrix_for_strided(bench: &mut Bencher) {
92+
let a = Array::from_iter(0i32..64 * 64).slice_move(s![..;2]);
93+
let v = a.view().insert_axis(Axis(1));
94+
bench.iter(|| {
95+
let mut s = 0;
96+
for &elt in v.iter() {
97+
s += elt;
98+
}
99+
s
100+
});
101+
}
102+
103+
#[bench]
104+
fn iter_sum_2d_row_matrix_sum_strided(bench: &mut Bencher) {
105+
let a = Array::from_iter(0i32..64 * 64).slice_move(s![..;2]);
106+
let v = a.view().insert_axis(Axis(1));
107+
bench.iter(|| {
108+
v.iter().sum::<i32>()
109+
});
110+
}
111+
112+
#[bench]
113+
fn iter_sum_2d_col_matrix(bench: &mut Bencher) {
114+
let a = Array::from_iter(0i32..64 * 64);
115+
let v = a.view().insert_axis(Axis(0));
116+
bench.iter(|| {
117+
let mut s = 0;
118+
for &elt in v.iter() {
119+
s += elt;
120+
}
121+
s
122+
});
123+
}
124+
125+
#[bench]
126+
fn iter_sum_2d_col_matrix_for_strided(bench: &mut Bencher) {
127+
let a = Array::from_iter(0i32..64 * 64).slice_move(s![..;2]);
128+
let v = a.view().insert_axis(Axis(0));
129+
bench.iter(|| {
130+
let mut s = 0;
131+
for &elt in v.iter() {
132+
s += elt;
133+
}
134+
s
135+
});
136+
}
137+
138+
#[bench]
139+
fn iter_sum_2d_col_matrix_sum_strided(bench: &mut Bencher) {
140+
let a = Array::from_iter(0i32..64 * 64).slice_move(s![..;2]);
141+
let v = a.view().insert_axis(Axis(0));
142+
bench.iter(|| {
143+
v.iter().sum::<i32>()
144+
});
145+
}
146+
77147
#[bench]
78148
fn iter_rev_step_by_contiguous(bench: &mut Bencher) {
79149
let a = Array::linspace(0., 1., 512);

0 commit comments

Comments
 (0)