#[cfg(feature = "serialization")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
#[derive(Debug, Clone)]
pub struct JitCompilerConfig {
pub enable_aggressive_optimization: bool,
pub enable_vectorization: bool,
pub enable_loop_unrolling: bool,
pub enable_inlining: bool,
pub enable_cross_module_optimization: bool,
pub target_cpu: String,
pub target_features: Vec<String>,
pub optimization_level: u8,
pub enable_debug_info: bool,
pub cache_size_limit_mb: usize,
pub compilation_timeout_seconds: u64,
pub enable_profiling: bool,
pub enable_adaptive_compilation: bool,
}
impl Default for JitCompilerConfig {
fn default() -> Self {
Self {
enable_aggressive_optimization: true,
enable_vectorization: true,
enable_loop_unrolling: true,
enable_inlining: true,
enable_cross_module_optimization: true,
target_cpu: "native".to_string(),
target_features: vec!["avx2".to_string(), "fma".to_string(), "sse4.2".to_string()],
optimization_level: 3,
enable_debug_info: false,
cache_size_limit_mb: 512,
compilation_timeout_seconds: 30,
enable_profiling: true,
enable_adaptive_compilation: true,
}
}
}
#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
#[derive(Debug, Clone)]
pub struct NeuromorphicConfig {
pub enable_spike_optimization: bool,
pub enable_plasticity: bool,
pub enable_temporal_dynamics: bool,
pub time_step_resolution_us: f64,
pub max_spike_frequency_hz: f64,
pub refractory_period_ms: f64,
pub membrane_time_constant_ms: f64,
pub synapticdelay_range_ms: (f64, f64),
pub stdp_window_ms: f64,
}
impl Default for NeuromorphicConfig {
fn default() -> Self {
Self {
enable_spike_optimization: true,
enable_plasticity: true,
enable_temporal_dynamics: true,
time_step_resolution_us: 100.0, max_spike_frequency_hz: 1000.0,
refractory_period_ms: 2.0,
membrane_time_constant_ms: 10.0,
synapticdelay_range_ms: (0.5, 5.0),
stdp_window_ms: 20.0,
}
}
}
#[derive(Debug, Clone)]
pub struct CacheConfig {
pub maxsize_mb: usize,
pub eviction_policy: EvictionPolicy,
pub enable_cache_warming: bool,
pub enable_persistence: bool,
pub persistence_dir: Option<std::path::PathBuf>,
}
#[derive(Debug, Clone)]
pub enum EvictionPolicy {
LRU,
LFU,
Random,
FIFO,
Adaptive,
}
#[derive(Debug, Clone)]
pub struct ProfilerConfig {
pub enable_execution_profiling: bool,
pub enable_compilation_profiling: bool,
pub samplingrate: f64,
pub retention_hours: u32,
pub enable_hotspot_detection: bool,
pub hotspot_threshold: f64,
}
#[derive(Debug, Clone)]
pub struct ProfilingSessionConfig {
pub sampling_interval: std::time::Duration,
pub include_stack_traces: bool,
pub profile_memory: bool,
pub profile_syscalls: bool,
}
#[derive(Debug, Clone)]
pub struct PatternCacheConfig {
pub max_patterns: usize,
pub pattern_ttl: std::time::Duration,
pub enable_lru: bool,
}