File: from_str.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (44 lines) | stat: -rw-r--r-- 1,467 bytes parent folder | download | duplicates (4)
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
44
use criterion::{Criterion, Throughput, black_box, criterion_group, criterion_main};
use rinja_parser::{Ast, Syntax};

criterion_main!(benches);
criterion_group!(benches, librustdoc);

fn librustdoc(c: &mut Criterion) {
    let mut group = c.benchmark_group("librustdoc");

    let mut add_benchmark = |name: &str, src: &str| {
        group.throughput(Throughput::Bytes(src.len() as u64));
        group.bench_function(name, |b| {
            let syntax = &Syntax::default();
            b.iter(|| Ast::from_str(black_box(src), None, black_box(syntax)).unwrap());
        });
    };

    let all: String = LIBRUSTDOC.iter().map(|&(_, src)| src).collect();
    add_benchmark("all", &all);

    for (name, src) in LIBRUSTDOC {
        add_benchmark(name, src);
    }

    group.finish();
}

const LIBRUSTDOC: &[(&str, &str)] = &[
    ("item_info", include_str!("./librustdoc/item_info.html")),
    ("item_union", include_str!("./librustdoc/item_union.html")),
    ("page", include_str!("./librustdoc/page.html")),
    ("print_item", include_str!("./librustdoc/print_item.html")),
    (
        "short_item_info",
        include_str!("./librustdoc/short_item_info.html"),
    ),
    ("sidebar", include_str!("./librustdoc/sidebar.html")),
    ("source", include_str!("./librustdoc/source.html")),
    (
        "type_layout_size",
        include_str!("./librustdoc/type_layout_size.html"),
    ),
    ("type_layout", include_str!("./librustdoc/type_layout.html")),
];