Skip to content

Commit 17b3cd1

Browse files
committed
eig, eigvals, eigvalsh
1 parent 2b60edf commit 17b3cd1

File tree

3 files changed

+56
-4
lines changed

3 files changed

+56
-4
lines changed

ndarray-linalg/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ approx = { version = "0.3.2", features = ["num-complex"] }
5454
name = "truncated_eig"
5555
harness = false
5656

57+
[[bench]]
58+
name = "eig"
59+
harness = false
60+
5761
[[bench]]
5862
name = "eigh"
5963
harness = false

ndarray-linalg/benches/eig.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use criterion::*;
2+
use ndarray::*;
3+
use ndarray_linalg::*;
4+
5+
fn eig_small(c: &mut Criterion) {
6+
let mut group = c.benchmark_group("eig");
7+
for &n in &[4, 8, 16, 32, 64, 128] {
8+
group.bench_with_input(BenchmarkId::new("vecs/C", n), &n, |b, n| {
9+
let a: Array2<f64> = random((*n, *n));
10+
b.iter(|| {
11+
let (_e, _vecs) = a.eig().unwrap();
12+
})
13+
});
14+
group.bench_with_input(BenchmarkId::new("vecs/F", n), &n, |b, n| {
15+
let a: Array2<f64> = random((*n, *n).f());
16+
b.iter(|| {
17+
let (_e, _vecs) = a.eig().unwrap();
18+
})
19+
});
20+
group.bench_with_input(BenchmarkId::new("vals/C", n), &n, |b, n| {
21+
let a: Array2<f64> = random((*n, *n));
22+
b.iter(|| {
23+
let _result = a.eigvals().unwrap();
24+
})
25+
});
26+
group.bench_with_input(BenchmarkId::new("vals/F", n), &n, |b, n| {
27+
let a: Array2<f64> = random((*n, *n).f());
28+
b.iter(|| {
29+
let _result = a.eigvals().unwrap();
30+
})
31+
});
32+
}
33+
}
34+
35+
criterion_group!(eig, eig_small);
36+
criterion_main!(eig);

ndarray-linalg/benches/eigh.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,28 @@ use ndarray_linalg::*;
55
fn eigh_small(c: &mut Criterion) {
66
let mut group = c.benchmark_group("eigh");
77
for &n in &[4, 8, 16, 32, 64, 128] {
8-
group.bench_with_input(BenchmarkId::new("C", n), &n, |b, n| {
8+
group.bench_with_input(BenchmarkId::new("vals/C", n), &n, |b, n| {
99
let a: Array2<f64> = random((*n, *n));
1010
b.iter(|| {
11-
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
11+
let _result = a.eigvalsh(UPLO::Upper).unwrap();
1212
})
1313
});
14-
group.bench_with_input(BenchmarkId::new("F", n), &n, |b, n| {
14+
group.bench_with_input(BenchmarkId::new("vals/F", n), &n, |b, n| {
1515
let a: Array2<f64> = random((*n, *n).f());
1616
b.iter(|| {
17-
let (_e, _vecs) = a.eigh(UPLO::Upper).unwrap();
17+
let _result = a.eigvalsh(UPLO::Upper).unwrap();
18+
})
19+
});
20+
group.bench_with_input(BenchmarkId::new("vecs/C", n), &n, |b, n| {
21+
let a: Array2<f64> = random((*n, *n));
22+
b.iter(|| {
23+
let _result = a.eigvalsh(UPLO::Upper).unwrap();
24+
})
25+
});
26+
group.bench_with_input(BenchmarkId::new("vecs/F", n), &n, |b, n| {
27+
let a: Array2<f64> = random((*n, *n).f());
28+
b.iter(|| {
29+
let _result = a.eigvalsh(UPLO::Upper).unwrap();
1830
})
1931
});
2032
}

0 commit comments

Comments
 (0)