linkrs_query/executor/traversal/
stats.rs1#[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}