speed/
speed.rs

1use pracstro::{moon, sol, time};
2use std::time::Instant;
3
4fn run_test(name: &str, n: u32, run: fn() -> ()) {
5    let start = Instant::now();
6    (1..n).for_each(|_| run());
7    let time = start.elapsed();
8    println!("{},{:?},{:?}", name, time / n, time);
9}
10
11fn main() {
12    let n = 40000;
13    println!("Test,Mean (n={}),Full", n);
14
15    run_test("Control (NOP)", n, || ());
16    run_test("Current time", n, || {
17        time::Date::now();
18    });
19    fn ephem() {
20        let now = time::Date::now();
21        for p in sol::PLANETS {
22            let (ra, de) = p.location(now).equatorial();
23            (ra.clock(), de.to_latitude().degminsec());
24        }
25    }
26    run_test("Full ephemeris", n, ephem);
27    run_test("Moon Phase", n, || {
28        moon::MOON.illumfrac(time::Date::now());
29    });
30}