use std::time::Instant;
fn main() {
let base = b"Hello. World? Test! ";
let text: Vec<u8> = base.iter().cycle().take(2_000_000).copied().collect();
let patterns: &[&[u8]] = &[b". ", b"? ", b"! "];
for _ in 0..3 {
let _ = chunk::split_at_patterns(&text, patterns, chunk::IncludeDelim::Prev, 0);
}
let iterations = 100;
let start = Instant::now();
for _ in 0..iterations {
let _ = chunk::split_at_patterns(&text, patterns, chunk::IncludeDelim::Prev, 0);
}
let elapsed = start.elapsed();
let avg_ms = elapsed.as_secs_f64() * 1000.0 / iterations as f64;
let throughput = text.len() as f64 / avg_ms / 1000.0;
println!("Text size: {} bytes", text.len());
println!(
"split_at_patterns: {:.2} ms ({:.1} MB/s)",
avg_ms, throughput
);
let start = Instant::now();
for _ in 0..iterations {
let _ = chunk::split_at_delimiters(&text, b".?!", chunk::IncludeDelim::Prev, 0);
}
let elapsed = start.elapsed();
let avg_ms = elapsed.as_secs_f64() * 1000.0 / iterations as f64;
let throughput = text.len() as f64 / avg_ms / 1000.0;
println!(
"split_at_delimiters: {:.2} ms ({:.1} MB/s)",
avg_ms, throughput
);
}