time-graph 0.3.3

Always-on profilling recording function timing and the corresponding call graph
Documentation
#[time_graph::instrument]
fn run_computation(max: u64) {
    for i in 0..max {
        compute(i)
    }

    time_graph::spanned!("another span", {
        details::bottom_5us();
    });

    for _ in 0..(max * max) {
        details::bottom_5us();
    }
}

#[time_graph::instrument]
pub fn compute(count: u64) {
    for _ in 0..count {
        details::bottom_5us();
    }
}

mod details {
    #[time_graph::instrument]
    pub fn bottom_5us() {
        std::thread::sleep(std::time::Duration::from_micros(5));
    }
}

#[time_graph::instrument]
fn run_other_5ms() {
    std::thread::sleep(std::time::Duration::from_millis(5));
}

fn main() {
    time_graph::enable_data_collection(true);

    run_other_5ms();
    run_computation(10);

    let graph = time_graph::get_full_graph();

    println!("{}", graph.as_dot());

    #[cfg(feature = "json")]
    println!("{}", graph.as_json());

    #[cfg(feature = "table")]
    println!("{}", graph.as_table());

    #[cfg(feature = "table")]
    println!("{}", graph.as_short_table());
}