add serialization benchmark

This commit is contained in:
Brandon W Maister 2019-11-24 14:50:33 -05:00
parent 8de2cc375f
commit 80da04381c
2 changed files with 35 additions and 0 deletions

View File

@ -62,3 +62,8 @@ all-features = true
[[bench]] [[bench]]
name = "parsing" name = "parsing"
harness = false harness = false
[[bench]]
name = "serde"
harness = false
required-features = ["serde"]

30
benches/serde.rs Normal file
View File

@ -0,0 +1,30 @@
extern crate chrono;
extern crate criterion;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use chrono::NaiveDateTime;
fn bench_ser_naivedatetime_string(c: &mut Criterion) {
c.bench_function("bench_ser_naivedatetime_string", |b| {
let dt: NaiveDateTime = "2000-01-01T00:00:00".parse().unwrap();
b.iter(|| {
black_box(serde_json::to_string(&dt)).unwrap();
});
});
}
fn bench_ser_naivedatetime_writer(c: &mut Criterion) {
c.bench_function("bench_ser_naivedatetime_writer", |b| {
let mut s: Vec<u8> = Vec::with_capacity(20);
let dt: NaiveDateTime = "2000-01-01T00:00:00".parse().unwrap();
b.iter(|| {
let s = &mut s;
s.clear();
black_box(serde_json::to_writer(s, &dt)).unwrap();
});
});
}
criterion_group!(benches, bench_ser_naivedatetime_writer, bench_ser_naivedatetime_string);
criterion_main!(benches);