Skip to content

Commit 6cd8819

Browse files
authored
Merge pull request #200 from rust-ndarray/bench-plots
Enable grouping and plot for benchmark
2 parents 54f7d25 + 2680794 commit 6cd8819

File tree

2 files changed

+39
-67
lines changed

2 files changed

+39
-67
lines changed

benches/eigh.rs

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,24 @@
1-
#[macro_use]
2-
extern crate criterion;
3-
4-
use criterion::Criterion;
1+
use criterion::*;
52
use ndarray::*;
63
use ndarray_linalg::*;
74

8-
macro_rules! impl_eigh {
9-
($n:expr) => {
10-
paste::item! {
11-
fn [<eigh $n>](c: &mut Criterion) {
12-
c.bench_function(&format!("eigh{}", $n), |b| {
13-
let a: Array2<f64> = random(($n, $n));
14-
b.iter(|| {
15-
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
16-
})
17-
});
18-
c.bench_function(&format!("eigh{}_t", $n), |b| {
19-
let a: Array2<f64> = random(($n, $n).f());
20-
b.iter(|| {
21-
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
22-
})
23-
});
24-
}
25-
}
26-
};
5+
fn eigh_small(c: &mut Criterion) {
6+
let mut group = c.benchmark_group("eigh");
7+
for &n in &[4, 8, 16, 32, 64, 128] {
8+
group.bench_with_input(BenchmarkId::new("eigh", n), &n, |b, n| {
9+
let a: Array2<f64> = random((*n, *n));
10+
b.iter(|| {
11+
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
12+
})
13+
});
14+
group.bench_with_input(BenchmarkId::new("eigh_t", n), &n, |b, n| {
15+
let a: Array2<f64> = random((*n, *n).f());
16+
b.iter(|| {
17+
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
18+
})
19+
});
20+
}
2721
}
2822

29-
impl_eigh!(4);
30-
impl_eigh!(8);
31-
impl_eigh!(16);
32-
impl_eigh!(32);
33-
impl_eigh!(64);
34-
impl_eigh!(128);
35-
36-
criterion_group!(eigh, eigh4, eigh8, eigh16, eigh32, eigh64, eigh128);
23+
criterion_group!(eigh, eigh_small);
3724
criterion_main!(eigh);

benches/truncated_eig.rs

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,26 @@
1-
#[macro_use]
2-
extern crate criterion;
3-
4-
use criterion::Criterion;
1+
use criterion::*;
52
use ndarray::*;
63
use ndarray_linalg::*;
74

8-
macro_rules! impl_teig {
9-
($n:expr) => {
10-
paste::item! {
11-
fn [<teig $n>](c: &mut Criterion) {
12-
c.bench_function(&format!("truncated_eig{}", $n), |b| {
13-
let a: Array2<f64> = random(($n, $n));
14-
let a = a.t().dot(&a);
15-
16-
b.iter(move || {
17-
let _result = TruncatedEig::new(a.clone(), TruncatedOrder::Largest).decompose(1);
18-
})
19-
});
20-
c.bench_function(&format!("truncated_eig{}_t", $n), |b| {
21-
let a: Array2<f64> = random(($n, $n).f());
22-
let a = a.t().dot(&a);
23-
24-
b.iter(|| {
25-
let _result = TruncatedEig::new(a.clone(), TruncatedOrder::Largest).decompose(1);
26-
})
27-
});
28-
}
29-
}
30-
};
5+
fn truncated_eigh_small(c: &mut Criterion) {
6+
let mut group = c.benchmark_group("truncated_eigh");
7+
for &n in &[4, 8, 16, 32, 64, 128] {
8+
group.bench_with_input(BenchmarkId::new("truncated_eig", n), &n, |b, &n| {
9+
let a: Array2<f64> = random((n, n));
10+
let a = a.t().dot(&a);
11+
b.iter(move || {
12+
let _result = TruncatedEig::new(a.clone(), TruncatedOrder::Largest).decompose(1);
13+
})
14+
});
15+
group.bench_with_input(BenchmarkId::new("truncated_eig_t", n), &n, |b, &n| {
16+
let a: Array2<f64> = random((n, n).f());
17+
let a = a.t().dot(&a);
18+
b.iter(|| {
19+
let _result = TruncatedEig::new(a.clone(), TruncatedOrder::Largest).decompose(1);
20+
})
21+
});
22+
}
3123
}
3224

33-
impl_teig!(4);
34-
impl_teig!(8);
35-
impl_teig!(16);
36-
impl_teig!(32);
37-
impl_teig!(64);
38-
impl_teig!(128);
39-
40-
criterion_group!(teig, teig4, teig8, teig16, teig32, teig64, teig128);
41-
criterion_main!(teig);
25+
criterion_group!(truncated_eigh, truncated_eigh_small);
26+
criterion_main!(truncated_eigh);

0 commit comments

Comments
 (0)