File: benchmark.rs

package info (click to toggle)
rust-http-range-header 0.4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 120 kB
  • sloc: makefile: 2
file content (43 lines) | stat: -rw-r--r-- 1,413 bytes parent folder | download | duplicates (2)
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);