#[macro_use]
extern crate criterion;
extern crate avrow;
use criterion::criterion_group;
use criterion::Criterion;
use std::str::FromStr;
use avrow::Schema;
fn parse_enum_schema() {
let _ = Schema::from_str(
r##"{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}"##,
)
.unwrap();
}
fn parse_string_schema() {
let _ = Schema::from_str(r##""string""##).unwrap();
}
fn parse_record_schema(c: &mut Criterion) {
c.bench_function("parse_record_schema", |b| {
b.iter(|| {
let _ = Schema::from_str(
r##"{
"namespace": "sensor_data",
"type": "record",
"name": "can",
"fields" : [
{"name": "can_id", "type": "int"},
{"name": "data", "type": "long"},
{"name": "timestamp", "type": "double"},
{"name": "seq_num", "type": "int"},
{"name": "global_seq", "type": "long"}
]
}"##,
)
.unwrap();
});
});
}
fn bench_string_schema(c: &mut Criterion) {
c.bench_function("parse string schema", |b| b.iter(parse_string_schema));
}
fn bench_enum_schema(c: &mut Criterion) {
c.bench_function("parse enum schema", |b| b.iter(parse_enum_schema));
}
criterion_group!(
benches,
bench_string_schema,
bench_enum_schema,
parse_record_schema
);
criterion_main!(benches);