ultraslayer 0.2.1

Ultra‑low latency DRAM refresh‑stall prevention using hardware‑level hedging.
Documentation
use ultraslayer::UltraSlayer;
use std::time::{Instant, Duration};
use std::sync::Arc;
use std::thread;

fn main() {
    println!("🚀 Starting UltraSlayer Hardware Benchmark...");
    let capacity = 1_000_000usize;
    let slayer = Arc::new(UltraSlayer::<u64>::new(2, capacity));
    slayer.insert(0, 123_456_789u64);
    slayer.spawn_slayer_core(1);
    thread::sleep(Duration::from_millis(100));

    println!("\n[Test 1] Measuring Static Read Latency...");
    for _ in 0..10_000 { let _ = slayer.read(0); }
    let mut static_samples = Vec::with_capacity(1000);
    for _ in 0..1000 {
        let start = Instant::now();
        let _ = slayer.read(0);
        static_samples.push(start.elapsed().as_nanos() as u64);
    }
    static_samples.sort_unstable();
    println!("Static Read -> p50: {}ns | p99: {}ns | p100: {}ns", 
        static_samples[500], static_samples[990], static_samples[999]);

    println!("\n[Test 2] Measuring Concurrent Update Latency (Torn-Read Test)...");
    let slayer_clone = Arc::clone(&slayer);
    let writer_handle = thread::spawn(move || {
        for i in 0..1_000_000 { slayer_clone.insert(0, i as u64); }
    });
    let mut dynamic_samples = Vec::with_capacity(1000);
    for _ in 0..1000 {
        let start = Instant::now();
        let _ = slayer.read(0);
        dynamic_samples.push(start.elapsed().as_nanos() as u64);
    }
    writer_handle.join().unwrap();
    dynamic_samples.sort_unstable();
    println!("Dynamic Read -> p50: {}ns | p99: {}ns | p100: {}ns", 
        dynamic_samples[500], dynamic_samples[990], dynamic_samples[999]);
}