use criterion::{black_box, criterion_group, criterion_main, Criterion};
use m_bus_parser::frames::Frame;
fn frame_parse_benchmark(c: &mut Criterion) {
let data = vec![0x68, 0x04, 0x04, 0x68, 0x53, 0x01, 0x00, 0x00, 0x54, 0x16];
c.bench_function("parse_frame_only", |b| {
b.iter(|| {
Frame::try_from(black_box(data.as_slice())).unwrap();
})
});
}
fn m_bus_parser_benchmark(c: &mut Criterion) {
let data = vec![
0x68, 0x3C, 0x3C, 0x68, 0x08, 0x08, 0x72, 0x78, 0x03, 0x49, 0x11, 0x77, 0x04, 0x0E, 0x16,
0x0A, 0x00, 0x00, 0x00, 0x0C, 0x78, 0x78, 0x03, 0x49, 0x11, 0x04, 0x13, 0x31, 0xD4, 0x00,
0x00, 0x42, 0x6C, 0x00, 0x00, 0x44, 0x13, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6D, 0x0B, 0x0B,
0xCD, 0x13, 0x02, 0x27, 0x00, 0x00, 0x09, 0xFD, 0x0E, 0x02, 0x09, 0xFD, 0x0F, 0x06, 0x0F,
0x00, 0x01, 0x75, 0x13, 0xD3, 0x16,
];
c.bench_function("parse", |b| {
b.iter(|| {
m_bus_parser::MbusData::try_from(data.as_slice()).unwrap();
})
});
}
criterion_group!(benches, frame_parse_benchmark, m_bus_parser_benchmark);
criterion_main!(benches);