Source code

Revision control

Copy as Markdown

Other Tools

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")),
];