use fp_index::{Index, IndexLabel};
use std::hint::black_box;
use std::time::Instant;
fn main() {
let args: Vec<String> = std::env::args().collect();
let n: usize = args.get(1).and_then(|s| s.parse().ok()).unwrap_or(1_000_000);
let iters: usize = args.get(2).and_then(|s| s.parse().ok()).unwrap_or(200);
let a: Vec<IndexLabel> = (0..n).map(|i| IndexLabel::Int64(i as i64 * 2)).collect();
let b: Vec<IndexLabel> = (0..n)
.map(|i| IndexLabel::Int64(i as i64 * 2 + n as i64))
.collect();
let ia = Index::new(a);
let ib = Index::new(b);
let mut sink = 0usize;
let start = Instant::now();
for _ in 0..iters {
sink ^= black_box(ia.intersection(&ib)).len();
}
let elapsed = start.elapsed();
println!(
"intersection n={n} iters={iters}: {:.3} ms/iter (sink={sink})",
elapsed.as_secs_f64() * 1000.0 / iters as f64
);
}