1 use na::{DMatrix, Hessenberg, Matrix4};
2
3 #[path = "../common/macros.rs"]
4 mod macros;
5
6 // Without unpack.
hessenberg_decompose_4x4(bh: &mut criterion::Criterion)7 fn hessenberg_decompose_4x4(bh: &mut criterion::Criterion) {
8 let m = Matrix4::<f64>::new_random();
9 bh.bench_function("hessenberg_decompose_4x4", move |bh| {
10 bh.iter(|| std::hint::black_box(Hessenberg::new(m.clone())))
11 });
12 }
13
hessenberg_decompose_100x100(bh: &mut criterion::Criterion)14 fn hessenberg_decompose_100x100(bh: &mut criterion::Criterion) {
15 let m = DMatrix::<f64>::new_random(100, 100);
16 bh.bench_function("hessenberg_decompose_100x100", move |bh| {
17 bh.iter(|| std::hint::black_box(Hessenberg::new(m.clone())))
18 });
19 }
20
hessenberg_decompose_200x200(bh: &mut criterion::Criterion)21 fn hessenberg_decompose_200x200(bh: &mut criterion::Criterion) {
22 let m = DMatrix::<f64>::new_random(200, 200);
23 bh.bench_function("hessenberg_decompose_200x200", move |bh| {
24 bh.iter(|| std::hint::black_box(Hessenberg::new(m.clone())))
25 });
26 }
27
hessenberg_decompose_500x500(bh: &mut criterion::Criterion)28 fn hessenberg_decompose_500x500(bh: &mut criterion::Criterion) {
29 let m = DMatrix::<f64>::new_random(500, 500);
30 bh.bench_function("hessenberg_decompose_500x500", move |bh| {
31 bh.iter(|| std::hint::black_box(Hessenberg::new(m.clone())))
32 });
33 }
34
35 // With unpack.
hessenberg_decompose_unpack_100x100(bh: &mut criterion::Criterion)36 fn hessenberg_decompose_unpack_100x100(bh: &mut criterion::Criterion) {
37 let m = DMatrix::<f64>::new_random(100, 100);
38 bh.bench_function("hessenberg_decompose_unpack_100x100", move |bh| {
39 bh.iter(|| {
40 let hess = Hessenberg::new(m.clone());
41 let _ = hess.unpack();
42 })
43 });
44 }
45
hessenberg_decompose_unpack_200x200(bh: &mut criterion::Criterion)46 fn hessenberg_decompose_unpack_200x200(bh: &mut criterion::Criterion) {
47 let m = DMatrix::<f64>::new_random(200, 200);
48 bh.bench_function("hessenberg_decompose_unpack_200x200", move |bh| {
49 bh.iter(|| {
50 let hess = Hessenberg::new(m.clone());
51 let _ = hess.unpack();
52 })
53 });
54 }
55
hessenberg_decompose_unpack_500x500(bh: &mut criterion::Criterion)56 fn hessenberg_decompose_unpack_500x500(bh: &mut criterion::Criterion) {
57 let m = DMatrix::<f64>::new_random(500, 500);
58 bh.bench_function("hessenberg_decompose_unpack_500x500", move |bh| {
59 bh.iter(|| {
60 let hess = Hessenberg::new(m.clone());
61 let _ = hess.unpack();
62 })
63 });
64 }
65
66 criterion_group!(
67 hessenberg,
68 hessenberg_decompose_4x4,
69 hessenberg_decompose_100x100,
70 hessenberg_decompose_200x200,
71 // hessenberg_decompose_500x500,
72 hessenberg_decompose_unpack_100x100,
73 hessenberg_decompose_unpack_200x200,
74 // hessenberg_decompose_unpack_500x500
75 );
76