use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use dateparser::parse;
static SELECTED: [&str; 25] = [
"1511648546", "2017-11-25T22:34:50Z", "Wed, 02 Jun 2021 06:31:39 GMT", "2019-11-29 08:08:05-08", "2021-04-30 21:14:10", "2017-11-25 13:31:15 PST", "2021-02-21", "2021-02-21 PST", "4:00pm", "6:00 AM PST", "May 27 02:45:27", "May 8, 2009 5:57:51 PM", "May 02, 2021 15:51 UTC", "2021-Feb-21", "May 25, 2021", "14 May 2019 19:11:40.164", "1 July 2013", "03/19/2012 10:11:59", "08/21/71", "2012/03/19 10:11:59", "2014/3/31", "2014.03.30", "171113 14:14:20", "2014年04月08日11时25分18秒", "2014年04月08日", ];
fn bench_parse_all(c: &mut Criterion) {
c.bench_with_input(
BenchmarkId::new("parse_all", "accepted_formats"),
&SELECTED,
|b, all| {
b.iter(|| {
for date_str in all.iter() {
let _ = parse(date_str);
}
})
},
);
}
fn bench_parse_each(c: &mut Criterion) {
let mut group = c.benchmark_group("parse_each");
for date_str in SELECTED.iter() {
group.bench_with_input(*date_str, *date_str, |b, input| b.iter(|| parse(input)));
}
group.finish();
}
criterion_group!(benches, bench_parse_all, bench_parse_each);
criterion_main!(benches);