use std::time::Instant;
use mbarrier::*;
const ITERATIONS: usize = 1_000_000;
fn benchmark_barrier<F: Fn()>(name: &str, barrier_fn: F) {
let start = Instant::now();
for _ in 0..ITERATIONS {
barrier_fn();
}
let duration = start.elapsed();
println!("{}: {} ms", name, duration.as_millis());
}
fn main() {
benchmark_barrier("No-op baseline", || {});
benchmark_barrier("rmb()", rmb);
benchmark_barrier("smp_rmb()", smp_rmb);
benchmark_barrier("wmb()", wmb);
benchmark_barrier("smp_wmb()", smp_wmb);
benchmark_barrier("mb()", mb);
benchmark_barrier("smp_mb()", smp_mb);
}