#[derive(Copy, Clone, Debug)]
pub struct Config {
pub tracer_threads: usize,
pub trace_chunk_size: usize,
pub trace_share_min: usize,
pub trace_share_ratio: f32,
pub trace_wait_time: u64,
pub monitor_max_old_growth_rate: f32,
pub monitor_arena_size_ratio_trigger: f32,
pub monitor_wait_time: u64,
pub monitor_on: bool,
pub mutator_share_min: usize,
pub collector_max_headroom_ratio: f64,
pub collector_timeslice_size: f64,
pub collector_slice_min: f64,
}
pub const GC_CONFIG_DEFAULT_TRACE_THREADS: usize = 2;
pub const GC_CONFIG_DEFAULT_TRACE_CHUNK_SIZE: usize = 100;
pub const GC_CONFIG_DEFAULT_TRACE_SHARE_MIN: usize = 50;
pub const GC_CONFIG_DEFAULT_TRACE_SHARE_RATIO: f32 = 0.5;
pub const GC_CONFIG_DEFAULT_TRACE_WAIT_TIME: u64 = 1;
impl Config {
pub fn default() -> Self {
Config {
tracer_threads: GC_CONFIG_DEFAULT_TRACE_THREADS,
trace_chunk_size: GC_CONFIG_DEFAULT_TRACE_CHUNK_SIZE,
trace_share_min: GC_CONFIG_DEFAULT_TRACE_SHARE_MIN,
trace_share_ratio: GC_CONFIG_DEFAULT_TRACE_SHARE_RATIO,
trace_wait_time: GC_CONFIG_DEFAULT_TRACE_WAIT_TIME,
monitor_max_old_growth_rate: 1.5,
monitor_arena_size_ratio_trigger: 1.5,
monitor_wait_time: 10,
monitor_on: true,
mutator_share_min: 1000,
collector_max_headroom_ratio: 0.5,
collector_timeslice_size: 2.0,
collector_slice_min: 0.6,
}
}
}