1 use na::{DMatrix, DVector, LU};
2
3 // Without unpack.
lu_decompose_10x10(bh: &mut criterion::Criterion)4 fn lu_decompose_10x10(bh: &mut criterion::Criterion) {
5 let m = DMatrix::<f64>::new_random(10, 10);
6 bh.bench_function("lu_decompose_10x10", move |bh| bh.iter(|| test::black_box(LU::new(m.clone()))));
7 }
8
lu_decompose_100x100(bh: &mut criterion::Criterion)9 fn lu_decompose_100x100(bh: &mut criterion::Criterion) {
10 let m = DMatrix::<f64>::new_random(100, 100);
11 bh.bench_function("lu_decompose_100x100", move |bh| bh.iter(|| test::black_box(LU::new(m.clone()))));
12 }
13
lu_decompose_500x500(bh: &mut criterion::Criterion)14 fn lu_decompose_500x500(bh: &mut criterion::Criterion) {
15 let m = DMatrix::<f64>::new_random(500, 500);
16 bh.bench_function("lu_decompose_500x500", move |bh| bh.iter(|| test::black_box(LU::new(m.clone()))));
17 }
18
lu_solve_10x10(bh: &mut criterion::Criterion)19 fn lu_solve_10x10(bh: &mut criterion::Criterion) {
20 let m = DMatrix::<f64>::new_random(10, 10);
21 let lu = LU::new(m.clone());
22
23 bh.bench_function("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
lu_solve_100x100(bh: &mut criterion::Criterion)29 fn lu_solve_100x100(bh: &mut criterion::Criterion) {
30 let m = DMatrix::<f64>::new_random(100, 100);
31 let lu = LU::new(m.clone());
32
33 bh.bench_function("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
lu_solve_500x500(bh: &mut criterion::Criterion)39 fn lu_solve_500x500(bh: &mut criterion::Criterion) {
40 let m = DMatrix::<f64>::new_random(500, 500);
41 let lu = LU::new(m.clone());
42
43 bh.bench_function("", move |bh| bh.iter(|| {
44 let mut b = DVector::<f64>::from_element(500, 1.0);
45 lu.solve(&mut b);
46 }));
47 }
48
lu_inverse_10x10(bh: &mut criterion::Criterion)49 fn lu_inverse_10x10(bh: &mut criterion::Criterion) {
50 let m = DMatrix::<f64>::new_random(10, 10);
51 let lu = LU::new(m.clone());
52
53 bh.bench_function("lu_inverse_10x10", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
54 }
55
lu_inverse_100x100(bh: &mut criterion::Criterion)56 fn lu_inverse_100x100(bh: &mut criterion::Criterion) {
57 let m = DMatrix::<f64>::new_random(100, 100);
58 let lu = LU::new(m.clone());
59
60 bh.bench_function("lu_inverse_100x100", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
61 }
62
lu_inverse_500x500(bh: &mut criterion::Criterion)63 fn lu_inverse_500x500(bh: &mut criterion::Criterion) {
64 let m = DMatrix::<f64>::new_random(500, 500);
65 let lu = LU::new(m.clone());
66
67 bh.bench_function("lu_inverse_500x500", move |bh| bh.iter(|| test::black_box(lu.try_inverse())));
68 }
69
lu_determinant_10x10(bh: &mut criterion::Criterion)70 fn lu_determinant_10x10(bh: &mut criterion::Criterion) {
71 let m = DMatrix::<f64>::new_random(10, 10);
72 let lu = LU::new(m.clone());
73
74 bh.bench_function("lu_determinant_10x10", move |bh| bh.iter(|| test::black_box(lu.determinant())));
75 }
76
lu_determinant_100x100(bh: &mut criterion::Criterion)77 fn lu_determinant_100x100(bh: &mut criterion::Criterion) {
78 let m = DMatrix::<f64>::new_random(100, 100);
79 let lu = LU::new(m.clone());
80
81 bh.bench_function("lu_determinant_100x100", move |bh| bh.iter(|| test::black_box(lu.determinant())));
82 }
83
lu_determinant_500x500(bh: &mut criterion::Criterion)84 fn lu_determinant_500x500(bh: &mut criterion::Criterion) {
85 let m = DMatrix::<f64>::new_random(500, 500);
86 let lu = LU::new(m.clone());
87
88 bh.bench_function("", move |bh| bh.iter(|| test::black_box(lu.determinant())));
89 }
90
91 criterion_group!(lu,
92 lu_decompose_10x10,
93 lu_decompose_100x100,
94 // lu_decompose_500x500,
95 lu_solve_10x10,
96 lu_solve_100x100,
97 lu_inverse_10x10,
98 lu_inverse_100x100,
99 // lu_inverse_500x500,
100 lu_determinant_10x10,
101 lu_determinant_100x100
102 );