border_async_trainer/actor/
stat.rs

1use std::time::Duration;
2
3/// Stats of sampling process in an [`Actor`](crate::Actor).
4#[derive(Clone, Debug)]
5pub struct ActorStat {
6    /// The number of steps for interaction between agent and env.
7    pub env_steps: usize,
8
9    /// Duration of sampling loop in the [`Actor`](crate::Actor).
10    pub duration: Duration,
11}
12
13/// Returns a formatted string of the set of [`ActorStat`] for reporting.
14pub fn actor_stats_fmt(stats: &Vec<ActorStat>) -> String {
15    let mut s = "actor_id, samples, samples/sec, duration\n".to_string();
16    for (i, stat) in stats.iter().enumerate() {
17        let n = stat.env_steps;
18        let d = stat.duration.as_secs_f32();
19        let p = (n as f32) / d;
20        s += format!("{}, {}, {}, {}\n", i, n, p, d).as_str();
21    }
22    s
23}