Source code

Revision control

Copy as Markdown

Other Tools

use criterion::criterion_group;
use criterion::criterion_main;
use criterion::Criterion;
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use bumpalo::Bump;
use jsparagus_ast::source_atom_set::SourceAtomSet;
use jsparagus_ast::source_slice_list::SourceSliceList;
use jsparagus_parser::{parse_script, ParseOptions};
fn parser_bench(c: &mut Criterion) {
let tests = &["simple", "__finStreamer-proto"];
let mut programs = HashMap::new();
programs.insert("simple", include_str!("./simple.js"));
programs.insert(
"__finStreamer-proto",
include_str!("./__finStreamer-proto.js"),
);
c.bench_function_over_inputs(
"parser_bench",
move |b, &name| {
let program = &programs[name];
b.iter(|| {
let allocator = &Bump::new();
let options = ParseOptions::new();
let atoms = Rc::new(RefCell::new(SourceAtomSet::new()));
let slices = Rc::new(RefCell::new(SourceSliceList::new()));
let _ = parse_script(allocator, program, &options, atoms, slices);
});
},
tests,
);
}
criterion_group!(benches, parser_bench);
criterion_main!(benches);