vectorless/index/pipeline/
metrics.rs1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10pub struct IndexMetrics {
11 #[serde(default)]
13 pub parse_time_ms: u64,
14
15 #[serde(default)]
17 pub build_time_ms: u64,
18
19 #[serde(default)]
21 pub enhance_time_ms: u64,
22
23 #[serde(default)]
25 pub enrich_time_ms: u64,
26
27 #[serde(default)]
29 pub optimize_time_ms: u64,
30
31 #[serde(default)]
33 pub persist_time_ms: u64,
34
35 #[serde(default)]
37 pub total_tokens_generated: usize,
38
39 #[serde(default)]
41 pub llm_calls: usize,
42
43 #[serde(default)]
45 pub nodes_processed: usize,
46
47 #[serde(default)]
49 pub summaries_generated: usize,
50
51 #[serde(default)]
53 pub nodes_skipped: usize,
54
55 #[serde(default)]
57 pub nodes_merged: usize,
58}
59
60impl IndexMetrics {
61 pub fn new() -> Self {
63 Self::default()
64 }
65
66 pub fn record_parse(&mut self, duration_ms: u64) {
68 self.parse_time_ms = duration_ms;
69 }
70
71 pub fn record_build(&mut self, duration_ms: u64) {
73 self.build_time_ms = duration_ms;
74 }
75
76 pub fn record_enhance(&mut self, duration_ms: u64) {
78 self.enhance_time_ms = duration_ms;
79 }
80
81 pub fn record_enrich(&mut self, duration_ms: u64) {
83 self.enhance_time_ms = duration_ms;
84 }
85
86 pub fn record_optimize(&mut self, duration_ms: u64) {
88 self.optimize_time_ms = duration_ms;
89 }
90
91 pub fn record_persist(&mut self, duration_ms: u64) {
93 self.persist_time_ms = duration_ms;
94 }
95
96 pub fn increment_llm_calls(&mut self) {
98 self.llm_calls += 1;
99 }
100
101 pub fn add_tokens_generated(&mut self, tokens: usize) {
103 self.total_tokens_generated += tokens;
104 }
105
106 pub fn set_nodes_processed(&mut self, count: usize) {
108 self.nodes_processed = count;
109 }
110
111 pub fn increment_summaries(&mut self) {
113 self.summaries_generated += 1;
114 }
115
116 pub fn increment_nodes_skipped(&mut self) {
118 self.nodes_skipped += 1;
119 }
120
121 pub fn increment_nodes_merged(&mut self) {
123 self.nodes_merged += 1;
124 }
125
126 pub fn total_time_ms(&self) -> u64 {
128 self.parse_time_ms
129 + self.build_time_ms
130 + self.enhance_time_ms
131 + self.enrich_time_ms
132 + self.optimize_time_ms
133 + self.persist_time_ms
134 }
135}