Skip to main content

linkrs_query/executor/traversal/
stats.rs

1#[derive(Debug, Default, Clone)]
2pub struct TraversalStats {
3    pub vertices_visited: u64,
4    pub edges_scanned: u64,
5    pub paths_emitted: u64,
6    pub max_depth_reached: u32,
7    pub max_frontier_size: usize,
8    pub storage_calls: u64,
9}
10
11impl TraversalStats {
12    pub fn record_vertex_visit(&mut self) {
13        self.vertices_visited += 1;
14    }
15
16    pub fn record_edge_scan(&mut self, count: usize) {
17        self.edges_scanned += count as u64;
18    }
19
20    pub fn record_path_emitted(&mut self) {
21        self.paths_emitted += 1;
22    }
23
24    pub fn record_storage_call(&mut self) {
25        self.storage_calls += 1;
26    }
27
28    pub fn update_depth(&mut self, depth: u32) {
29        if depth > self.max_depth_reached {
30            self.max_depth_reached = depth;
31        }
32    }
33
34    pub fn update_frontier(&mut self, size: usize) {
35        if size > self.max_frontier_size {
36            self.max_frontier_size = size;
37        }
38    }
39}