| use criterion::black_box; |
| use criterion::criterion_group; |
| use criterion::criterion_main; |
| use criterion::Criterion; |
| |
| use unic_langid_impl::parser::parse_language_identifier; |
| |
| fn language_identifier_parser_bench(c: &mut Criterion) { |
| let strings = &[ |
| "en-US", |
| "en-GB", |
| "es-AR", |
| "it", |
| "zh-Hans-CN", |
| "de-AT", |
| "pl", |
| "fr-FR", |
| "de-AT", |
| "sr-Cyrl-SR", |
| "nb-NO", |
| "fr-FR", |
| "mk", |
| "uk", |
| "en-US", |
| "en-GB", |
| "es-AR", |
| "th", |
| "de", |
| "zh-Cyrl-HN", |
| "en-Latn-US", |
| ]; |
| |
| c.bench_function("language_identifier_parser", |b| { |
| let slices: Vec<&[u8]> = strings.iter().map(|s| s.as_bytes()).collect(); |
| b.iter(|| { |
| for s in &slices { |
| let _ = parse_language_identifier(black_box(s)); |
| } |
| }) |
| }); |
| } |
| |
| fn language_identifier_parser_casing_bench(c: &mut Criterion) { |
| let strings = &[ |
| "En_uS", |
| "EN-GB", |
| "ES-aR", |
| "iT", |
| "zH_HaNs_cN", |
| "dE-aT", |
| "Pl", |
| "FR-FR", |
| "de_AT", |
| "sR-CyrL_sr", |
| "NB-NO", |
| "fr_fr", |
| "Mk", |
| "uK", |
| "en-us", |
| "en_gb", |
| "ES-AR", |
| "tH", |
| "DE", |
| "ZH_cyrl_hN", |
| "eN-lAtN-uS", |
| ]; |
| c.bench_function("language_identifier_parser_casing", |b| { |
| let slices: Vec<&[u8]> = strings.iter().map(|s| s.as_bytes()).collect(); |
| b.iter(|| { |
| for s in &slices { |
| let _ = parse_language_identifier(black_box(s)); |
| } |
| }) |
| }); |
| } |
| |
| criterion_group!( |
| benches, |
| language_identifier_parser_bench, |
| language_identifier_parser_casing_bench, |
| ); |
| criterion_main!(benches); |