use criterion::{black_box, criterion_group, criterion_main, Criterion}; use prefix_array::PrefixArraySet; fn bigvec() -> Vec { const N: usize = 1 << 20; (0..N).map(|v| v.to_string()).collect() } pub fn benchy(c: &mut Criterion) { let big = bigvec(); let big2 = big.clone(); let arr = PrefixArraySet::from_vec_lossy(big); let trie = radix_trie::Trie::from_iter(big2.into_iter().map(|s| (s, ()))); c.bench_function("find_with_prefix_2^20", |b| { b.iter(|| black_box(arr.find_all_with_prefix(black_box("6")))) }); c.bench_function("find_with_prefix_2^20-trie", |b| { b.iter(|| black_box(trie.get_raw_descendant(black_box("6")))) }); let arr2 = arr.find_all_with_prefix("6543").to_owned(); let mut arr3 = PrefixArraySet::new(); c.bench_function("clone_native", |b| b.iter(|| black_box(arr2.clone()))); c.bench_function("clone_from", |b| b.iter(|| arr3.clone_from(&arr2))); } criterion_group!(benches, benchy); criterion_main!(benches);