44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
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);
|