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::()).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::() 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::() 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);