1 use criterion
::black_box
;
2 use criterion
::criterion_group
;
3 use criterion
::criterion_main
;
4 use criterion
::Criterion
;
6 use tinystr
::{TinyStr4, TinyStr8}
;
7 use unic_langid_impl
::LanguageIdentifier
;
9 static STRINGS
: &[&str] = &[
51 fn maximize_bench(c
: &mut Criterion
) {
52 c
.bench_function("maximize", move |b
| {
54 let langids
: Vec
<LanguageIdentifier
> = STRINGS
56 .map(|s
| -> LanguageIdentifier { s.parse().unwrap() }
)
58 for mut s
in langids
{
60 let _
= black_box(s
.to_string());
66 fn extract_input(s
: &str) -> (Option
<TinyStr8
>, Option
<TinyStr4
>, Option
<TinyStr4
>) {
67 let chunks
: Vec
<&str> = s
.split("-").collect();
68 let mut lang
: Option
<TinyStr8
> = chunks
.get(0).map(|s
| s
.parse().unwrap());
69 let mut script
: Option
<TinyStr4
> = chunks
.get(1).map(|s
| s
.parse().unwrap());
70 let mut region
: Option
<TinyStr4
> = chunks
.get(2).map(|s
| s
.parse().unwrap());
71 if let Some(l
) = lang
{
72 if l
.as_str() == "und" {
76 if let Some(s
) = script
{
77 if s
.as_str().chars().count() == 2 {
82 (lang
, script
, region
)
85 fn raw_maximize_bench(c
: &mut Criterion
) {
86 let entries
: Vec
<(Option
<TinyStr8
>, Option
<TinyStr4
>, Option
<TinyStr4
>)> =
87 STRINGS
.iter().map(|s
| extract_input(s
)).collect();
89 c
.bench_function("raw_maximize", move |b
| {
91 for (lang
, script
, region
) in &entries
{
92 let _
= unic_langid_impl
::likelysubtags
::maximize(
102 criterion_group
!(benches
, maximize_bench
, raw_maximize_bench
,);
103 criterion_main
!(benches
);