speed/
speed.rs

1// Simple code to test the performance (to guide changes)
2
3use curve_sampling::Sampling;
4
5// baseline: 0:02.24elapsed
6// 2.05user 0.02system 0:02.08elapsed 99%CPU  (18644maxresident)k
7// 2.12user 0.02system 0:02.15elapsed 99%CPU  (18660maxresident)k
8// 2.01user 0.02system 0:02.04elapsed 99%CPU  (18608maxresident)k
9
10// 5000
11// 6.09user 0.03system 0:06.12elapsed 99%CPU (18664maxresident)k
12// 6.00user 0.01system 0:06.02elapsed 99%CPU (18564maxresident)k
13
14
15// Fibonacci:
16// 1.98user 0.03system 0:02.02elapsed 99%CPU  (18572maxresident)k
17// 2.04user 0.00system 0:02.04elapsed 100%CPU (18556maxresident)k
18// 2.01user 0.01system 0:02.03elapsed 99%CPU  (18564maxresident)k
19
20// 5000
21// 5.90user 0.03system 0:05.93elapsed 99%CPU (18552maxresident)k
22// 5.84user 0.02system 0:05.90elapsed 99%CPU (18564maxresident)k
23// 6.01user 0.03system 0:06.05elapsed 99%CPU (18556maxresident)k
24// 5.71user 0.02system 0:05.73elapsed 99%CPU (18572maxresident)k
25
26// approx_priority_queue
27// 5000
28// 3.26user 0.01system 0:03.29elapsed 99%CPU  (18664maxresident)k
29// 3.16user 0.02system 0:03.19elapsed 99%CPU  (18576maxresident)k
30// 3.77user 0.12system 0:03.74elapsed 103%CPU (138008maxresident)k
31// 3.15user 0.01system 0:03.18elapsed 99%CPU  (18664maxresident)k
32
33
34fn main() {
35    let mut b = false;
36    for n in 10 .. 5_000 {
37        let s = Sampling::fun(|x| x.sin(), 0., 10.)
38            .n(n).build();
39        b &= s.is_empty();
40    }
41    println!("{b}")
42}