|
1 | | -#[macro_use] |
2 | | -extern crate criterion; |
3 | | - |
4 | | -use criterion::Criterion; |
| 1 | +use criterion::*; |
5 | 2 | use ndarray::*; |
6 | 3 | use ndarray_linalg::*; |
7 | 4 |
|
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 | + } |
31 | 23 | } |
32 | 24 |
|
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