Skip to content

Commit fa6fd9e

Browse files
authored
Merge pull request #225 from bluss/the-great-dimension-migration-to-arrays
The great dimension migration to `Dim<[Ix; N]>`
2 parents 75aa62a + e5f4986 commit fa6fd9e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+2407
-1225
lines changed

benches/bench1.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ use ndarray::{
99
Array,
1010
Axis,
1111
Ix,
12+
Array1,
13+
Array2,
1214
};
1315
use ndarray::{arr0, arr1, arr2};
1416

@@ -291,8 +293,8 @@ fn add_2d_cutout(bench: &mut test::Bencher)
291293
#[bench]
292294
fn add_2d_broadcast_1_to_2(bench: &mut test::Bencher)
293295
{
294-
let mut a = Array::<i32, _>::zeros((64, 64));
295-
let b = Array::<i32, _>::zeros(64);
296+
let mut a = Array2::<i32>::zeros((64, 64));
297+
let b = Array1::<i32>::zeros(64);
296298
let bv = b.view();
297299
bench.iter(|| {
298300
a += &bv;
@@ -717,7 +719,7 @@ fn dot_extended(bench: &mut test::Bencher) {
717719

718720
const MEAN_SUM_N: usize = 127;
719721

720-
fn range_mat(m: Ix, n: Ix) -> Array<f32, (Ix, Ix)> {
722+
fn range_mat(m: Ix, n: Ix) -> Array2<f32> {
721723
assert!(m * n != 0);
722724
Array::linspace(0., (m * n - 1) as f32, m * n).into_shape((m, n)).unwrap()
723725
}

benches/higher-order.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use test::Bencher;
77
#[macro_use(s)]
88
extern crate ndarray;
99
use ndarray::prelude::*;
10+
use ndarray::ArrayViewMut2;
1011

1112
const N: usize = 1024;
1213
const X: usize = 64;
@@ -22,12 +23,38 @@ fn map_regular(bench: &mut Bencher)
2223
}
2324

2425

26+
pub fn double_array(mut a: ArrayViewMut2<f64>) {
27+
a *= 2.0;
28+
}
29+
2530
#[bench]
26-
fn map_stride(bench: &mut Bencher)
31+
fn map_stride_double_f64(bench: &mut Bencher)
2732
{
28-
let a = Array::linspace(0., 127., N * 2).into_shape((X, Y * 2)).unwrap();
33+
let mut a = Array::linspace(0., 127., N * 2).into_shape([X, Y * 2]).unwrap();
34+
let mut av = a.slice_mut(s![.., ..;2]);
35+
bench.iter(|| {
36+
double_array(av.view_mut());
37+
38+
});
39+
}
40+
41+
#[bench]
42+
fn map_stride_f64(bench: &mut Bencher)
43+
{
44+
let a = Array::linspace(0., 127., N * 2).into_shape([X, Y * 2]).unwrap();
2945
let av = a.slice(s![.., ..;2]);
3046
bench.iter(|| {
3147
av.map(|&x| 2. * x)
3248
});
3349
}
50+
51+
#[bench]
52+
fn map_stride_u32(bench: &mut Bencher)
53+
{
54+
let a = Array::linspace(0., 127., N * 2).into_shape([X, Y * 2]).unwrap();
55+
let b = a.mapv(|x| x as u32);
56+
let av = b.slice(s![.., ..;2]);
57+
bench.iter(|| {
58+
av.map(|&x| 2 * x)
59+
});
60+
}

benches/iter.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use test::Bencher;
66
#[macro_use(s)]
77
extern crate ndarray;
88
use ndarray::prelude::*;
9+
use ndarray::Array2;
910

1011
#[bench]
1112
fn iter_sum_2d_regular(bench: &mut Bencher)
@@ -47,3 +48,45 @@ fn iter_sum_2d_transpose(bench: &mut Bencher)
4748
a.iter().fold(0, |acc, &x| acc + x)
4849
});
4950
}
51+
52+
#[bench]
53+
fn iter_filter_sum_2d_u32(bench: &mut Bencher)
54+
{
55+
let a = Array::linspace(0., 1., 256).into_shape((16, 16)).unwrap();
56+
let b = a.mapv(|x| (x * 100.) as u32);
57+
bench.iter(|| {
58+
b.iter().filter(|&&x| x < 75).fold(0, |acc, &x| acc + x)
59+
});
60+
}
61+
62+
#[bench]
63+
fn iter_filter_sum_2d_f32(bench: &mut Bencher)
64+
{
65+
let a = Array::linspace(0., 1., 256).into_shape((16, 16)).unwrap();
66+
let b = a * 100.;
67+
bench.iter(|| {
68+
b.iter().filter(|&&x| x < 75.).fold(0., |acc, &x| acc + x)
69+
});
70+
}
71+
72+
#[bench]
73+
fn iter_filter_sum_2d_stride_u32(bench: &mut Bencher)
74+
{
75+
let a = Array::linspace(0., 1., 256).into_shape((16, 16)).unwrap();
76+
let b = a.mapv(|x| (x * 100.) as u32);
77+
let b = b.slice(s![.., ..;2]);
78+
bench.iter(|| {
79+
b.iter().filter(|&&x| x < 75).fold(0, |acc, &x| acc + x)
80+
});
81+
}
82+
83+
#[bench]
84+
fn iter_filter_sum_2d_stride_f32(bench: &mut Bencher)
85+
{
86+
let a = Array::linspace(0., 1., 256).into_shape((16, 16)).unwrap();
87+
let b = a * 100.;
88+
let b = b.slice(s![.., ..;2]);
89+
bench.iter(|| {
90+
b.iter().filter(|&&x| x < 75.).fold(0., |acc, &x| acc + x)
91+
});
92+
}

docgen/images/axis_iter.svg

Lines changed: 9 additions & 3 deletions
Loading

0 commit comments

Comments
 (0)