use criterion::{criterion_group, criterion_main, Criterion, black_box}; use ultra_nlp::{daachorse, cedarwood, hashmap, BehaviorForUnmatched}; criterion_group!(benches, bench_segment_fully); criterion_main!(benches); fn bench_segment_fully(c: &mut Criterion) { let mut group = c.benchmark_group("segment_fully"); let patterns: Vec<&str> = vec!["南京", "南京市", "市长", "长江", "大桥", "你好世界"]; let text = " 南京市长江大桥, hello world "; group.bench_function("daachorse", |b| { let dict = daachorse::StandardDictionary::new( patterns.clone() ).unwrap(); b.iter(|| { daachorse::segment_fully( black_box(text), black_box(&dict), black_box(BehaviorForUnmatched::Ignore), ) }); }); group.bench_function("cedarwood", |b| { let dict = cedarwood::ForwardDictionary::new( patterns.clone() ).unwrap(); b.iter(|| { cedarwood::segment_fully( black_box(text), black_box(&dict), black_box(BehaviorForUnmatched::Ignore), ); }); }); group.bench_function("hashmap", |b| { let dict = hashmap::Dictionary::new( patterns.clone() ).unwrap(); b.iter(|| { hashmap::segment_fully( black_box(text), black_box(&dict), black_box(BehaviorForUnmatched::Ignore), ) }); }); group.finish(); }