use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; use wxbox_grib2::GribMessage; const BREF_QC: (&[u8], &str) = (include_bytes!("MRMS_MergedBaseReflectivityQC_00.50_20250518-114212.grib2"), "MRMS_MergedBaseReflectivityQC_00.50_20250518-114212.grib2"); const ZDR: (&[u8], &str) = (include_bytes!("MRMS_MergedZdr_00.50_20250519-082040.grib2"), "MRMS_MergedZdr_00.50_20250519-082040.grib2"); const CREF: (&[u8], &str) = (include_bytes!("MRMS_MergedReflectivityQC_00.50_20250519-131639.grib2"), "MRMS_MergedReflectivityQC_00.50_20250519-131639.grib2"); fn criterion_benchmark(c: &mut Criterion) { let mut group = c.benchmark_group("parse"); for (test_file_bytes, name) in [BREF_QC, ZDR, CREF].iter() { group.bench_with_input( BenchmarkId::from_parameter(name), test_file_bytes, |b, bytes| { b.iter(|| { GribMessage::new(*bytes) }); } ); } group.finish(); } criterion_group!(benches, criterion_benchmark); criterion_main!(benches);