Add benchmarks for parser cloning & rc cloning (#17)

This commit is contained in:
folex
2020-11-09 14:20:01 +03:00
committed by GitHub
parent 7cdac944c3
commit cfd5aa7c40
5 changed files with 40 additions and 15 deletions

View File

@ -70,10 +70,26 @@ mod gen {
}
}
fn bench_creation(c: &mut Criterion) {
fn create_parser(c: &mut Criterion) {
c.bench_function("create_parser", move |b| b.iter(move || InstrParser::new()));
}
fn clone_parser(c: &mut Criterion) {
let parser = InstrParser::new();
c.bench_function("clone_parser", move |b| {
let parser = parser.clone();
b.iter(move || parser.clone())
});
}
fn clone_parser_rc(c: &mut Criterion) {
let parser = Rc::new(InstrParser::new());
c.bench_function("clone_parser_rc", move |b| {
let parser = parser.clone();
b.iter(move || parser.clone())
});
}
fn parse(c: &mut Criterion) {
let parser = Rc::new(InstrParser::new());
c.bench_function(
@ -126,5 +142,13 @@ fn parse_deep(c: &mut Criterion) {
);
}
criterion_group!(benches, bench_creation, parse, parse_to_fail, parse_deep);
criterion_main!(benches);
criterion_group!(
parser,
create_parser,
parse,
parse_to_fail,
parse_deep,
clone_parser,
clone_parser_rc,
);
criterion_main!(parser);