use std::hint::black_box;
use std::sync::Arc;
use std::time::Duration;
use criterion::{Criterion, criterion_main};
use pdfrum::Document;
use pdfrum_corpus::{CORPUS, bytes};
fn open(c: &mut Criterion) {
let mut group = c.benchmark_group("open");
for doc in CORPUS {
let raw = bytes(doc.stem);
group.bench_function(format!("{}/{}", doc.class.name(), doc.stem), |b| {
b.iter(|| {
let opened = Document::from_bytes(Arc::clone(&raw));
black_box(opened.map(|d| d.page_count()).ok())
});
});
}
group.finish();
}
#[allow(missing_docs, reason = "the item is generated by criterion_group!")]
mod group {
use super::{Criterion, Duration, open};
use criterion::criterion_group;
criterion_group! {
name = benches;
config = Criterion::default()
.measurement_time(Duration::from_secs(5))
.warm_up_time(Duration::from_secs(2))
.sample_size(50);
targets = open
}
}
criterion_main!(group::benches);