1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
use criterion::{black_box, criterion_group, criterion_main};
use http_range_header::RangeUnsatisfiableError;
pub fn bench(c: &mut criterion::Criterion) {
c.bench_function("Standard range", |b| {
b.iter(|| {
http_range_header::parse_range_header(black_box("bytes=0-15"))
.unwrap()
.validate(black_box(10_000))
})
});
c.bench_function("Multipart range", |b| {
b.iter(|| {
http_range_header::parse_range_header(black_box("bytes=0-15, 20-30, 40-60"))
.unwrap()
.validate(black_box(10_000))
})
});
c.bench_function("Suffix range", |b| {
b.iter(|| {
http_range_header::parse_range_header(black_box("bytes=-500"))
.unwrap()
.validate(black_box(10_000))
})
});
c.bench_function("Open range", |b| {
b.iter(|| {
http_range_header::parse_range_header(black_box("bytes=0-"))
.unwrap()
.validate(black_box(10_000))
})
});
c.bench_function("Bad multipart range", |b| {
b.iter(|| {
assert_eq!(
Err(RangeUnsatisfiableError::ZeroSuffix),
http_range_header::parse_range_header(black_box("bytes=0-19, -0"))
);
})
});
}
criterion_group!(benches, bench);
criterion_main!(benches);
|