quantrs2_circuit/profiler/
reports.rs

1//! Profiling report types and formats
2//!
3//! This module provides comprehensive report types for profiling results
4//! including various analysis reports, export formats, and report generation.
5
6use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8use std::time::{Duration, SystemTime};
9
10// Import types from sibling modules
11use super::analyzers::*;
12use super::benchmarks::*;
13use super::collectors::*;
14use super::metrics::*;
15
16pub enum ExportFormat {
17    /// JSON format
18    JSON,
19    /// CSV format
20    CSV,
21    /// Binary format
22    Binary,
23    /// HTML report
24    HTML,
25    /// PDF report
26    PDF,
27}
28
29/// Real-time metrics snapshot
30#[derive(Debug, Clone)]
31pub struct RealtimeMetrics {
32    /// Current performance metrics
33    pub current_metrics: Vec<PerformanceMetric>,
34    /// Gate performance data
35    pub gate_performance: HashMap<String, GateProfile>,
36    /// Memory usage snapshot
37    pub memory_usage: Option<MemorySnapshot>,
38    /// Resource utilization
39    pub resource_utilization: ResourceUtilization,
40    /// Timestamp
41    pub timestamp: SystemTime,
42}
43
44/// Resource utilization summary
45#[derive(Debug, Clone)]
46pub struct ResourceUtilization {
47    /// CPU utilization
48    pub cpu: f64,
49    /// Memory utilization
50    pub memory: f64,
51    /// GPU utilization
52    pub gpu: Option<f64>,
53    /// I/O utilization
54    pub io: f64,
55    /// Network utilization
56    pub network: f64,
57}
58
59/// Comprehensive profiling report
60#[derive(Debug, Clone)]
61pub struct ProfilingReport {
62    /// Session ID
63    pub session_id: String,
64    /// Profiling start time
65    pub start_time: SystemTime,
66    /// Profiling end time
67    pub end_time: SystemTime,
68    /// Total profiling duration
69    pub total_duration: Duration,
70    /// Performance summary
71    pub performance_summary: PerformanceSummary,
72    /// Detailed analysis
73    pub detailed_analysis: DetailedAnalysis,
74    /// Report metadata
75    pub metadata: HashMap<String, String>,
76}
77
78/// Performance summary
79#[derive(Debug, Clone)]
80pub struct PerformanceSummary {
81    /// Overall performance score
82    pub overall_score: f64,
83    /// Gate performance summary
84    pub gate_performance: HashMap<String, f64>,
85    /// Memory efficiency score
86    pub memory_efficiency: f64,
87    /// Resource utilization score
88    pub resource_utilization: f64,
89    /// Identified bottlenecks
90    pub bottlenecks: Vec<String>,
91    /// Performance recommendations
92    pub recommendations: Vec<String>,
93}
94
95/// Detailed performance analysis
96#[derive(Debug, Clone)]
97pub struct DetailedAnalysis {
98    /// Gate-level analysis
99    pub gate_analysis: HashMap<String, GateAnalysisReport>,
100    /// Memory analysis
101    pub memory_analysis: MemoryAnalysisReport,
102    /// Resource analysis
103    pub resource_analysis: ResourceAnalysisReport,
104    /// Anomaly detection results
105    pub anomaly_detection: AnomalyDetectionReport,
106    /// Regression analysis
107    pub regression_analysis: RegressionReport,
108}
109
110/// Gate analysis report
111#[derive(Debug, Clone)]
112pub struct GateAnalysisReport {
113    /// Gate performance metrics
114    pub performance_metrics: HashMap<String, f64>,
115    /// Timing analysis
116    pub timing_analysis: TimingAnalysisReport,
117    /// Resource usage analysis
118    pub resource_analysis: GateResourceAnalysis,
119    /// Error analysis
120    pub error_analysis: GateErrorAnalysis,
121}
122
123/// Timing analysis report
124#[derive(Debug, Clone)]
125pub struct TimingAnalysisReport {
126    /// Average execution time
127    pub avg_execution_time: Duration,
128    /// Timing variance
129    pub timing_variance: f64,
130    /// Timing trends
131    pub timing_trends: TrendDirection,
132    /// Performance anomalies
133    pub timing_anomalies: Vec<String>,
134}
135
136/// Gate resource analysis
137#[derive(Debug, Clone)]
138pub struct GateResourceAnalysis {
139    /// CPU usage patterns
140    pub cpu_patterns: HashMap<String, f64>,
141    /// Memory usage patterns
142    pub memory_patterns: HashMap<String, f64>,
143    /// I/O patterns
144    pub io_patterns: HashMap<String, f64>,
145}
146
147/// Gate error analysis
148#[derive(Debug, Clone)]
149pub struct GateErrorAnalysis {
150    /// Error rates
151    pub error_rates: HashMap<String, f64>,
152    /// Error patterns
153    pub error_patterns: Vec<String>,
154    /// Error correlations
155    pub error_correlations: HashMap<String, f64>,
156}
157
158/// Memory analysis report
159#[derive(Debug, Clone)]
160pub struct MemoryAnalysisReport {
161    /// Peak memory usage
162    pub peak_usage: usize,
163    /// Average memory usage
164    pub average_usage: f64,
165    /// Memory efficiency score
166    pub efficiency_score: f64,
167    /// Detected memory leaks
168    pub leak_detection: Vec<String>,
169    /// Optimization opportunities
170    pub optimization_opportunities: Vec<String>,
171}
172
173/// Resource analysis report
174#[derive(Debug, Clone)]
175pub struct ResourceAnalysisReport {
176    /// CPU analysis
177    pub cpu_analysis: CpuAnalysisReport,
178    /// Memory resource analysis
179    pub memory_analysis: MemoryResourceAnalysis,
180    /// I/O analysis
181    pub io_analysis: IoAnalysisReport,
182    /// Network analysis
183    pub network_analysis: NetworkAnalysisReport,
184}
185
186/// CPU analysis report
187#[derive(Debug, Clone)]
188pub struct CpuAnalysisReport {
189    /// Average CPU utilization
190    pub average_utilization: f64,
191    /// Peak CPU utilization
192    pub peak_utilization: f64,
193    /// Cache efficiency
194    pub cache_efficiency: f64,
195    /// Optimization opportunities
196    pub optimization_opportunities: Vec<String>,
197}
198
199/// Memory resource analysis
200#[derive(Debug, Clone)]
201pub struct MemoryResourceAnalysis {
202    /// Utilization patterns
203    pub utilization_patterns: HashMap<String, f64>,
204    /// Allocation efficiency
205    pub allocation_efficiency: f64,
206    /// Fragmentation analysis
207    pub fragmentation_analysis: f64,
208}
209
210/// I/O analysis report
211#[derive(Debug, Clone)]
212pub struct IoAnalysisReport {
213    /// Throughput analysis
214    pub throughput_analysis: ThroughputAnalysisReport,
215    /// Latency analysis
216    pub latency_analysis: LatencyAnalysisReport,
217}
218
219/// Throughput analysis report
220#[derive(Debug, Clone)]
221pub struct ThroughputAnalysisReport {
222    /// Read throughput
223    pub read_throughput: f64,
224    /// Write throughput
225    pub write_throughput: f64,
226    /// Throughput efficiency
227    pub throughput_efficiency: f64,
228}
229
230/// Latency analysis report
231#[derive(Debug, Clone)]
232pub struct LatencyAnalysisReport {
233    /// Average latency
234    pub average_latency: Duration,
235    /// Latency distribution
236    pub latency_distribution: HashMap<String, f64>,
237    /// Latency trends
238    pub latency_trends: TrendDirection,
239}
240
241/// Network analysis report
242#[derive(Debug, Clone)]
243pub struct NetworkAnalysisReport {
244    /// Bandwidth efficiency
245    pub bandwidth_efficiency: f64,
246    /// Connection analysis
247    pub connection_analysis: ConnectionAnalysisReport,
248    /// Latency characteristics
249    pub latency_characteristics: Duration,
250}
251
252/// Connection analysis report
253#[derive(Debug, Clone)]
254pub struct ConnectionAnalysisReport {
255    /// Connection reliability
256    pub connection_reliability: f64,
257    /// Connection efficiency
258    pub connection_efficiency: f64,
259}
260
261/// Anomaly detection report
262#[derive(Debug, Clone)]
263pub struct AnomalyDetectionReport {
264    /// Detected anomalies
265    pub detected_anomalies: Vec<PerformanceAnomaly>,
266    /// Anomaly patterns
267    pub anomaly_patterns: Vec<String>,
268    /// Severity distribution
269    pub severity_distribution: HashMap<AnomySeverity, usize>,
270}
271
272/// Regression analysis report
273#[derive(Debug, Clone)]
274pub struct RegressionReport {
275    /// Detected regressions
276    pub detected_regressions: Vec<PerformanceRegression>,
277    /// Regression trends
278    pub regression_trends: HashMap<String, TrendDirection>,
279    /// Impact assessment
280    pub impact_assessment: HashMap<String, f64>,
281}
282
283/// Performance data container
284#[derive(Debug, Clone)]
285pub struct PerformanceData {
286    /// Performance metrics
287    pub metrics: HashMap<String, f64>,
288    /// System state
289    pub system_state: SystemState,
290    /// Environment information
291    pub environment: EnvironmentInfo,
292}
293
294/// Performance analysis report
295#[derive(Debug, Clone)]
296pub struct PerformanceAnalysisReport {
297    /// Analysis timestamp
298    pub analysis_timestamp: SystemTime,
299    /// Overall performance score
300    pub overall_performance_score: f64,
301    /// Performance trends
302    pub performance_trends: HashMap<String, TrendDirection>,
303    /// Bottleneck analysis
304    pub bottleneck_analysis: BottleneckAnalysisReport,
305    /// Optimization recommendations
306    pub optimization_recommendations: Vec<String>,
307    /// Predictive analysis
308    pub predictive_analysis: PredictiveAnalysisReport,
309    /// Statistical analysis
310    pub statistical_analysis: StatisticalAnalysisReport,
311}
312
313/// Bottleneck analysis report
314#[derive(Debug, Clone)]
315pub struct BottleneckAnalysisReport {
316    /// Identified bottlenecks
317    pub identified_bottlenecks: Vec<ResourceBottleneck>,
318    /// Bottleneck impact
319    pub bottleneck_impact: HashMap<String, f64>,
320    /// Mitigation strategies
321    pub mitigation_strategies: Vec<String>,
322}
323
324/// Predictive analysis report
325#[derive(Debug, Clone)]
326pub struct PredictiveAnalysisReport {
327    /// Performance forecasts
328    pub performance_forecasts: HashMap<String, PredictionResult>,
329    /// Capacity planning
330    pub capacity_planning: CapacityPlanningReport,
331    /// Risk assessment
332    pub risk_assessment: RiskAssessmentReport,
333}
334
335/// Capacity planning report
336#[derive(Debug, Clone)]
337pub struct CapacityPlanningReport {
338    /// Current capacity utilization
339    pub current_capacity: f64,
340    /// Projected capacity needs
341    pub projected_capacity_needs: HashMap<String, f64>,
342    /// Scaling recommendations
343    pub scaling_recommendations: Vec<String>,
344}
345
346/// Risk assessment report
347#[derive(Debug, Clone)]
348pub struct RiskAssessmentReport {
349    /// Performance risks
350    pub performance_risks: Vec<String>,
351    /// Risk mitigation strategies
352    pub risk_mitigation: Vec<String>,
353}
354
355/// Statistical analysis report
356#[derive(Debug, Clone)]
357pub struct StatisticalAnalysisReport {
358    /// Descriptive statistics
359    pub descriptive_statistics: HashMap<String, f64>,
360    /// Correlation analysis
361    pub correlation_analysis: HashMap<String, f64>,
362    /// Hypothesis test results
363    pub hypothesis_tests: HashMap<String, f64>,
364}