Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

bench-scenarios/examples/retention_probe.rs

//! Local probe for the retention/GC planner head-to-head arm: run holger's
//! grouped `plan_retention` against the naive O(n²) full-scan baseline over a
//! synthetic record corpus, printing the same numbers the
//! `holger.retention_planner` bench arm records. Fast dev-box readout (Loki
//! produces the authoritative heavy sweep).
//!
//! Run: `cargo run -p holger-bench-scenarios --example retention_probe --features retention-planner --release`
//!   env: `HOLGER_BENCH_SCALE` = quick|full|huge (heavy sweep = full/huge).

use holger_bench_scenarios::{retention, Scale};

fn main() -> anyhow::Result<()> {
    let scale = Scale::from_env();
    eprintln!("[probe] planning retention over the synthetic corpus …");
    let o = retention::retention_planner_throughput(&scale)?;

    println!(
        "holger.retention_planner (records {}, names {}, holger_iters {}, naive_iters {})",
        o.records, o.names, o.holger_iters, o.naive_iters
    );
    println!("  delete_count (both agree)       : {}", o.delete_count);
    println!(
        "  holger_records_per_sec          : {:.0}",
        o.holger.records_per_sec
    );
    println!(
        "  naive_records_per_sec           : {:.0}",
        o.naive.records_per_sec
    );
    println!(
        "  speedup (holger / naive)        : {:.1}x",
        o.holger.records_per_sec / o.naive.records_per_sec.max(f64::MIN_POSITIVE)
    );
    println!(
        "  holger_plans_per_sec            : {:.1}",
        o.holger.plans_per_sec
    );
    println!(
        "  naive_plans_per_sec             : {:.1}",
        o.naive.plans_per_sec
    );
    println!(
        "  holger_mean_ms                  : {:.3}",
        o.holger.mean_ms
    );
    println!("  naive_mean_ms                   : {:.3}", o.naive.mean_ms);
    println!(
        "  holger_p50_ms / p99_ms          : {:.3} / {:.3}",
        o.holger.p50_ms, o.holger.p99_ms
    );
    println!(
        "  naive_p50_ms / p99_ms           : {:.3} / {:.3}",
        o.naive.p50_ms, o.naive.p99_ms
    );
    println!(
        "  holger_metadata_mbs             : {:.1}",
        o.holger.metadata_mbs
    );
    println!(
        "  naive_metadata_mbs              : {:.1}",
        o.naive.metadata_mbs
    );
    println!("  -- holger-only large run --");
    println!("  large_records                   : {}", o.large_records);
    println!(
        "  large_delete_count              : {}",
        o.large_delete_count
    );
    println!(
        "  holger_large_records_per_sec    : {:.0}",
        o.large_records_per_sec
    );
    println!(
        "  holger_large_plans_per_sec      : {:.1}",
        o.large_plans_per_sec
    );
    println!("  holger_large_mean_ms            : {:.3}", o.large_mean_ms);
    Ok(())
}