use crate::advanced_jit_compilation::cache::CacheStatistics;
use crate::advanced_jit_compilation::profiler::ProfilerAnalytics;
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct CompilationStatistics {
pub total_compilations: u64,
pub successful_compilations: u64,
pub failed_compilations: u64,
pub cache_hits: u64,
pub avg_compilation_time: Duration,
pub total_compilation_time: Duration,
pub memory_usage: MemoryUsageStats,
}
#[derive(Debug, Clone)]
pub struct MemoryUsageStats {
pub peak_memory_mb: f64,
pub avg_memory_mb: f64,
pub total_allocations: u64,
pub total_deallocations: u64,
}
#[derive(Debug)]
pub struct JitAnalytics {
pub compilation_stats: CompilationStatistics,
pub cache_stats: CacheStatistics,
pub profiler_stats: ProfilerAnalytics,
pub overall_performance: f64,
pub optimization_effectiveness: f64,
pub recommendations: Vec<String>,
}
impl Default for CompilationStatistics {
fn default() -> Self {
Self {
total_compilations: 0,
successful_compilations: 0,
failed_compilations: 0,
cache_hits: 0,
avg_compilation_time: Duration::default(),
total_compilation_time: Duration::default(),
memory_usage: MemoryUsageStats {
peak_memory_mb: 0.0,
avg_memory_mb: 0.0,
total_allocations: 0,
total_deallocations: 0,
},
}
}
}