quantrs2_circuit/profiler/
reports.rs1use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8use std::time::{Duration, SystemTime};
9
10use super::analyzers::*;
12use super::benchmarks::*;
13use super::collectors::*;
14use super::metrics::*;
15
16pub enum ExportFormat {
17 JSON,
19 CSV,
21 Binary,
23 HTML,
25 PDF,
27}
28
29#[derive(Debug, Clone)]
31pub struct RealtimeMetrics {
32 pub current_metrics: Vec<PerformanceMetric>,
34 pub gate_performance: HashMap<String, GateProfile>,
36 pub memory_usage: Option<MemorySnapshot>,
38 pub resource_utilization: ResourceUtilization,
40 pub timestamp: SystemTime,
42}
43
44#[derive(Debug, Clone)]
46pub struct ResourceUtilization {
47 pub cpu: f64,
49 pub memory: f64,
51 pub gpu: Option<f64>,
53 pub io: f64,
55 pub network: f64,
57}
58
59#[derive(Debug, Clone)]
61pub struct ProfilingReport {
62 pub session_id: String,
64 pub start_time: SystemTime,
66 pub end_time: SystemTime,
68 pub total_duration: Duration,
70 pub performance_summary: PerformanceSummary,
72 pub detailed_analysis: DetailedAnalysis,
74 pub metadata: HashMap<String, String>,
76}
77
78#[derive(Debug, Clone)]
80pub struct PerformanceSummary {
81 pub overall_score: f64,
83 pub gate_performance: HashMap<String, f64>,
85 pub memory_efficiency: f64,
87 pub resource_utilization: f64,
89 pub bottlenecks: Vec<String>,
91 pub recommendations: Vec<String>,
93}
94
95#[derive(Debug, Clone)]
97pub struct DetailedAnalysis {
98 pub gate_analysis: HashMap<String, GateAnalysisReport>,
100 pub memory_analysis: MemoryAnalysisReport,
102 pub resource_analysis: ResourceAnalysisReport,
104 pub anomaly_detection: AnomalyDetectionReport,
106 pub regression_analysis: RegressionReport,
108}
109
110#[derive(Debug, Clone)]
112pub struct GateAnalysisReport {
113 pub performance_metrics: HashMap<String, f64>,
115 pub timing_analysis: TimingAnalysisReport,
117 pub resource_analysis: GateResourceAnalysis,
119 pub error_analysis: GateErrorAnalysis,
121}
122
123#[derive(Debug, Clone)]
125pub struct TimingAnalysisReport {
126 pub avg_execution_time: Duration,
128 pub timing_variance: f64,
130 pub timing_trends: TrendDirection,
132 pub timing_anomalies: Vec<String>,
134}
135
136#[derive(Debug, Clone)]
138pub struct GateResourceAnalysis {
139 pub cpu_patterns: HashMap<String, f64>,
141 pub memory_patterns: HashMap<String, f64>,
143 pub io_patterns: HashMap<String, f64>,
145}
146
147#[derive(Debug, Clone)]
149pub struct GateErrorAnalysis {
150 pub error_rates: HashMap<String, f64>,
152 pub error_patterns: Vec<String>,
154 pub error_correlations: HashMap<String, f64>,
156}
157
158#[derive(Debug, Clone)]
160pub struct MemoryAnalysisReport {
161 pub peak_usage: usize,
163 pub average_usage: f64,
165 pub efficiency_score: f64,
167 pub leak_detection: Vec<String>,
169 pub optimization_opportunities: Vec<String>,
171}
172
173#[derive(Debug, Clone)]
175pub struct ResourceAnalysisReport {
176 pub cpu_analysis: CpuAnalysisReport,
178 pub memory_analysis: MemoryResourceAnalysis,
180 pub io_analysis: IoAnalysisReport,
182 pub network_analysis: NetworkAnalysisReport,
184}
185
186#[derive(Debug, Clone)]
188pub struct CpuAnalysisReport {
189 pub average_utilization: f64,
191 pub peak_utilization: f64,
193 pub cache_efficiency: f64,
195 pub optimization_opportunities: Vec<String>,
197}
198
199#[derive(Debug, Clone)]
201pub struct MemoryResourceAnalysis {
202 pub utilization_patterns: HashMap<String, f64>,
204 pub allocation_efficiency: f64,
206 pub fragmentation_analysis: f64,
208}
209
210#[derive(Debug, Clone)]
212pub struct IoAnalysisReport {
213 pub throughput_analysis: ThroughputAnalysisReport,
215 pub latency_analysis: LatencyAnalysisReport,
217}
218
219#[derive(Debug, Clone)]
221pub struct ThroughputAnalysisReport {
222 pub read_throughput: f64,
224 pub write_throughput: f64,
226 pub throughput_efficiency: f64,
228}
229
230#[derive(Debug, Clone)]
232pub struct LatencyAnalysisReport {
233 pub average_latency: Duration,
235 pub latency_distribution: HashMap<String, f64>,
237 pub latency_trends: TrendDirection,
239}
240
241#[derive(Debug, Clone)]
243pub struct NetworkAnalysisReport {
244 pub bandwidth_efficiency: f64,
246 pub connection_analysis: ConnectionAnalysisReport,
248 pub latency_characteristics: Duration,
250}
251
252#[derive(Debug, Clone)]
254pub struct ConnectionAnalysisReport {
255 pub connection_reliability: f64,
257 pub connection_efficiency: f64,
259}
260
261#[derive(Debug, Clone)]
263pub struct AnomalyDetectionReport {
264 pub detected_anomalies: Vec<PerformanceAnomaly>,
266 pub anomaly_patterns: Vec<String>,
268 pub severity_distribution: HashMap<AnomySeverity, usize>,
270}
271
272#[derive(Debug, Clone)]
274pub struct RegressionReport {
275 pub detected_regressions: Vec<PerformanceRegression>,
277 pub regression_trends: HashMap<String, TrendDirection>,
279 pub impact_assessment: HashMap<String, f64>,
281}
282
283#[derive(Debug, Clone)]
285pub struct PerformanceData {
286 pub metrics: HashMap<String, f64>,
288 pub system_state: SystemState,
290 pub environment: EnvironmentInfo,
292}
293
294#[derive(Debug, Clone)]
296pub struct PerformanceAnalysisReport {
297 pub analysis_timestamp: SystemTime,
299 pub overall_performance_score: f64,
301 pub performance_trends: HashMap<String, TrendDirection>,
303 pub bottleneck_analysis: BottleneckAnalysisReport,
305 pub optimization_recommendations: Vec<String>,
307 pub predictive_analysis: PredictiveAnalysisReport,
309 pub statistical_analysis: StatisticalAnalysisReport,
311}
312
313#[derive(Debug, Clone)]
315pub struct BottleneckAnalysisReport {
316 pub identified_bottlenecks: Vec<ResourceBottleneck>,
318 pub bottleneck_impact: HashMap<String, f64>,
320 pub mitigation_strategies: Vec<String>,
322}
323
324#[derive(Debug, Clone)]
326pub struct PredictiveAnalysisReport {
327 pub performance_forecasts: HashMap<String, PredictionResult>,
329 pub capacity_planning: CapacityPlanningReport,
331 pub risk_assessment: RiskAssessmentReport,
333}
334
335#[derive(Debug, Clone)]
337pub struct CapacityPlanningReport {
338 pub current_capacity: f64,
340 pub projected_capacity_needs: HashMap<String, f64>,
342 pub scaling_recommendations: Vec<String>,
344}
345
346#[derive(Debug, Clone)]
348pub struct RiskAssessmentReport {
349 pub performance_risks: Vec<String>,
351 pub risk_mitigation: Vec<String>,
353}
354
355#[derive(Debug, Clone)]
357pub struct StatisticalAnalysisReport {
358 pub descriptive_statistics: HashMap<String, f64>,
360 pub correlation_analysis: HashMap<String, f64>,
362 pub hypothesis_tests: HashMap<String, f64>,
364}