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