scirs2_core/advanced_jit_compilation_impl/
analytics.rs

1//! Analytics and statistics types for JIT compilation
2
3use crate::advanced_jit_compilation::cache::CacheStatistics;
4use crate::advanced_jit_compilation::profiler::ProfilerAnalytics;
5use std::time::Duration;
6
7/// Compilation statistics
8#[derive(Debug, Clone)]
9pub struct CompilationStatistics {
10    /// Total compilations
11    pub total_compilations: u64,
12    /// Successful compilations
13    pub successful_compilations: u64,
14    /// Failed compilations
15    pub failed_compilations: u64,
16    /// Cache hits
17    pub cache_hits: u64,
18    /// Average compilation time
19    pub avg_compilation_time: Duration,
20    /// Total compilation time
21    pub total_compilation_time: Duration,
22    /// Memory usage statistics
23    pub memory_usage: MemoryUsageStats,
24}
25
26/// Memory usage statistics
27#[derive(Debug, Clone)]
28pub struct MemoryUsageStats {
29    /// Peak memory usage
30    pub peak_memory_mb: f64,
31    /// Average memory usage
32    pub avg_memory_mb: f64,
33    /// Memory allocations
34    pub total_allocations: u64,
35    /// Memory deallocations
36    pub total_deallocations: u64,
37}
38
39/// JIT compilation analytics
40#[derive(Debug)]
41pub struct JitAnalytics {
42    /// Compilation statistics
43    pub compilation_stats: CompilationStatistics,
44    /// Cache statistics
45    pub cache_stats: CacheStatistics,
46    /// Profiler statistics
47    pub profiler_stats: ProfilerAnalytics,
48    /// Overall performance score
49    pub overall_performance: f64,
50    /// Optimization effectiveness
51    pub optimization_effectiveness: f64,
52    /// Optimization recommendations
53    pub recommendations: Vec<String>,
54}
55
56impl Default for CompilationStatistics {
57    fn default() -> Self {
58        Self {
59            total_compilations: 0,
60            successful_compilations: 0,
61            failed_compilations: 0,
62            cache_hits: 0,
63            avg_compilation_time: Duration::default(),
64            total_compilation_time: Duration::default(),
65            memory_usage: MemoryUsageStats {
66                peak_memory_mb: 0.0,
67                avg_memory_mb: 0.0,
68                total_allocations: 0,
69                total_deallocations: 0,
70            },
71        }
72    }
73}