1 | use criterion::{black_box, criterion_group, criterion_main, Criterion}; |
2 | |
3 | pub fn parse_imf_fixdate(c: &mut Criterion) { |
4 | c.bench_function("parse_imf_fixdate" , |b| { |
5 | b.iter(|| { |
6 | let d = black_box("Sun, 06 Nov 1994 08:49:37 GMT" ); |
7 | black_box(httpdate::parse_http_date(d)).unwrap(); |
8 | }) |
9 | }); |
10 | } |
11 | |
12 | pub fn parse_rfc850_date(c: &mut Criterion) { |
13 | c.bench_function("parse_rfc850_date" , |b| { |
14 | b.iter(|| { |
15 | let d = black_box("Sunday, 06-Nov-94 08:49:37 GMT" ); |
16 | black_box(httpdate::parse_http_date(d)).unwrap(); |
17 | }) |
18 | }); |
19 | } |
20 | |
21 | pub fn parse_asctime(c: &mut Criterion) { |
22 | c.bench_function("parse_asctime" , |b| { |
23 | b.iter(|| { |
24 | let d = black_box("Sun Nov 6 08:49:37 1994" ); |
25 | black_box(httpdate::parse_http_date(d)).unwrap(); |
26 | }) |
27 | }); |
28 | } |
29 | |
30 | struct BlackBoxWrite; |
31 | |
32 | impl std::fmt::Write for BlackBoxWrite { |
33 | fn write_str(&mut self, s: &str) -> Result<(), std::fmt::Error> { |
34 | black_box(s); |
35 | Ok(()) |
36 | } |
37 | } |
38 | |
39 | pub fn encode_date(c: &mut Criterion) { |
40 | c.bench_function("encode_date" , |b| { |
41 | let d = "Wed, 21 Oct 2015 07:28:00 GMT" ; |
42 | black_box(httpdate::parse_http_date(d)).unwrap(); |
43 | b.iter(|| { |
44 | use std::fmt::Write; |
45 | let _ = write!(BlackBoxWrite, "{}" , d); |
46 | }) |
47 | }); |
48 | } |
49 | |
50 | criterion_group!( |
51 | benches, |
52 | parse_imf_fixdate, |
53 | parse_rfc850_date, |
54 | parse_asctime, |
55 | encode_date |
56 | ); |
57 | criterion_main!(benches); |
58 | |