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