ip2region_private/binding/rust/ip2region2/benches/search.rs

62 lines
1.5 KiB
Rust

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use rand;
use ip2region2::searcher::{
get_block_by_size, get_full_cache, get_vector_index_cache,
search_by_ip, searcher_init, get_int_block_value
};
fn ip_search_bench(c: &mut Criterion) {
c.bench_function("ip_search_bench", |b| {
searcher_init(None);
b.iter(|| {
search_by_ip(rand::random::<u32>()).unwrap();
})
});
}
fn get_block_by_size_bench(c: &mut Criterion) {
c.bench_function("get_block_by_size", |b| {
b.iter(|| {
black_box(get_block_by_size(get_full_cache(),
rand::random::<u16>() as usize,
4));
})
});
}
fn get_int_block_bench(c: &mut Criterion) {
c.bench_function("get_int_block_bench", |b| {
b.iter(|| {
black_box(get_int_block_value(get_full_cache(),
rand::random::<u16>() as usize));
})
});
}
fn get_full_cache_bench(c: &mut Criterion) {
c.bench_function("get_full_cache", |b| {
b.iter(|| {
black_box(get_full_cache());
})
});
}
fn get_vec_index_cache_bench(c: &mut Criterion) {
c.bench_function("get_vec_index_cache", |b| {
b.iter(|| {
black_box(get_vector_index_cache());
})
});
}
criterion_group!(
benches,
ip_search_bench,
get_int_block_bench,
get_block_by_size_bench,
get_full_cache_bench,
get_vec_index_cache_bench,
);
criterion_main!(benches);