1 use na::{DMatrix, DVector, FullPivLU};
2
3 // Without unpack.
full_piv_lu_decompose_10x10(bh: &mut criterion::Criterion)4 fn full_piv_lu_decompose_10x10(bh: &mut criterion::Criterion) {
5 let m = DMatrix::<f64>::new_random(10, 10);
6 bh.bench_function("full_piv_lu_decompose_10x10", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
7 }
8
full_piv_lu_decompose_100x100(bh: &mut criterion::Criterion)9 fn full_piv_lu_decompose_100x100(bh: &mut criterion::Criterion) {
10 let m = DMatrix::<f64>::new_random(100, 100);
11 bh.bench_function("full_piv_lu_decompose_100x100", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
12 }
13
full_piv_lu_decompose_500x500(bh: &mut criterion::Criterion)14 fn full_piv_lu_decompose_500x500(bh: &mut criterion::Criterion) {
15 let m = DMatrix::<f64>::new_random(500, 500);
16 bh.bench_function("full_piv_lu_decompose_500x500", move |bh| bh.iter(|| test::black_box(FullPivLU::new(m.clone()))));
17 }
18
full_piv_lu_solve_10x10(bh: &mut criterion::Criterion)19 fn full_piv_lu_solve_10x10(bh: &mut criterion::Criterion) {
20 let m = DMatrix::<f64>::new_random(10, 10);
21 let lu = FullPivLU::new(m.clone());
22
23 bh.bench_function("full_piv_lu_solve_10x10", move |bh| bh.iter(|| {
24 let mut b = DVector::<f64>::from_element(10, 1.0);
25 lu.solve(&mut b);
26 }));
27 }
28
full_piv_lu_solve_100x100(bh: &mut criterion::Criterion)29 fn full_piv_lu_solve_100x100(bh: &mut criterion::Criterion) {
30 let m = DMatrix::<f64>::new_random(100, 100);
31 let lu = FullPivLU::new(m.clone());
32
33 bh.bench_function("full_piv_lu_solve_100x100", move |bh| bh.iter(|| {
34 let mut b = DVector::<f64>::from_element(100, 1.0);
35 lu.solve(&mut b);
36 }));
37 }
38
full_piv_lu_solve_500x500(bh: &mut criterion::Criterion)39 fn full_piv_lu_solve_500x500(bh: &mut criterion::Criterion) {
40 let m = DMatrix::<f64>::new_random(500, 500);
41 let lu = FullPivLU::new(m.clone());
42
43 bh.bench_function("full_piv_lu_solve_500x500", move |bh| bh.iter(|| {
44 let mut b = DVector::<f64>::from_element(500, 1.0);
45 lu.solve(&mut b);
46 }));
47 }
48
full_piv_lu_inverse_10x10(bh: &mut criterion::Criterion)49 fn full_piv_lu_inverse_10x10(bh: &mut criterion::Criterion) {
50 let m = DMatrix::<f64>::new_random(10, 10);
51 let lu = FullPivLU::new(m.clone());
52
53 bh.bench_function("full_piv_lu_inverse_10x10", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
54 }
55
full_piv_lu_inverse_100x100(bh: &mut criterion::Criterion)56 fn full_piv_lu_inverse_100x100(bh: &mut criterion::Criterion) {
57 let m = DMatrix::<f64>::new_random(100, 100);
58 let lu = FullPivLU::new(m.clone());
59
60 bh.bench_function("full_piv_lu_inverse_100x100", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
61 }
62
full_piv_lu_inverse_500x500(bh: &mut criterion::Criterion)63 fn full_piv_lu_inverse_500x500(bh: &mut criterion::Criterion) {
64 let m = DMatrix::<f64>::new_random(500, 500);
65 let lu = FullPivLU::new(m.clone());
66
67 bh.bench_function("full_piv_lu_inverse_500x500", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
68 }
69
full_piv_lu_determinant_10x10(bh: &mut criterion::Criterion)70 fn full_piv_lu_determinant_10x10(bh: &mut criterion::Criterion) {
71 let m = DMatrix::<f64>::new_random(10, 10);
72 let lu = FullPivLU::new(m.clone());
73
74 bh.bench_function("full_piv_lu_determinant_10x10", move |bh| bh.iter(|| test::black_box(lu.determinant())));
75 }
76
77
full_piv_lu_determinant_100x100(bh: &mut criterion::Criterion)78 fn full_piv_lu_determinant_100x100(bh: &mut criterion::Criterion) {
79 let m = DMatrix::<f64>::new_random(100, 100);
80 let lu = FullPivLU::new(m.clone());
81
82 bh.bench_function("full_piv_lu_determinant_100x100", move |bh| bh.iter(|| test::black_box(lu.determinant())));
83 }
84
full_piv_lu_determinant_500x500(bh: &mut criterion::Criterion)85 fn full_piv_lu_determinant_500x500(bh: &mut criterion::Criterion) {
86 let m = DMatrix::<f64>::new_random(500, 500);
87 let lu = FullPivLU::new(m.clone());
88
89 bh.bench_function("full_piv_lu_determinant_500x500", move |bh| bh.iter(|| test::black_box(lu.determinant())));
90 }
91
92 criterion_group!(full_piv_lu,
93 full_piv_lu_decompose_10x10,
94 full_piv_lu_decompose_100x100,
95 // full_piv_lu_decompose_500x500,
96 full_piv_lu_solve_10x10,
97 full_piv_lu_solve_100x100,
98 // full_piv_lu_solve_500x500,
99 full_piv_lu_inverse_10x10,
100 full_piv_lu_inverse_100x100,
101 // full_piv_lu_inverse_500x500,
102 full_piv_lu_determinant_10x10,
103 full_piv_lu_determinant_100x100,
104 // full_piv_lu_determinant_500x500
105 );