|
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