1 use criterion::black_box;
2 use criterion::criterion_group;
3 use criterion::criterion_main;
4 use criterion::Criterion;
5
6 use unic_langid_impl::parser::parse_language_identifier;
7
language_identifier_parser_bench(c: &mut Criterion)8 fn language_identifier_parser_bench(c: &mut Criterion) {
9 let strings = &[
10 "en-US",
11 "en-GB",
12 "es-AR",
13 "it",
14 "zh-Hans-CN",
15 "de-AT",
16 "pl",
17 "fr-FR",
18 "de-AT",
19 "sr-Cyrl-SR",
20 "nb-NO",
21 "fr-FR",
22 "mk",
23 "uk",
24 ];
25
26 c.bench_function("language_identifier_parser", |b| {
27 let slices: Vec<&[u8]> = strings.iter().map(|s| s.as_bytes()).collect();
28 b.iter(|| {
29 for s in &slices {
30 let _ = parse_language_identifier(black_box(s));
31 }
32 })
33 });
34 }
35
language_identifier_parser_casing_bench(c: &mut Criterion)36 fn language_identifier_parser_casing_bench(c: &mut Criterion) {
37 let strings = &[
38 "En_uS",
39 "EN-GB",
40 "ES-aR",
41 "iT",
42 "zH_HaNs_cN",
43 "dE-aT",
44 "Pl",
45 "FR-FR",
46 "de_AT",
47 "sR-CyrL_sr",
48 "NB-NO",
49 "fr_fr",
50 "Mk",
51 "uK",
52 ];
53 c.bench_function("language_identifier_parser_casing", |b| {
54 let slices: Vec<&[u8]> = strings.iter().map(|s| s.as_bytes()).collect();
55 b.iter(|| {
56 for s in &slices {
57 let _ = parse_language_identifier(black_box(s));
58 }
59 })
60 });
61 }
62
63 criterion_group!(
64 benches,
65 language_identifier_parser_bench,
66 language_identifier_parser_casing_bench,
67 );
68 criterion_main!(benches);
69