summaryrefslogtreecommitdiffstats
path: root/third_party/rust/jsparagus-parser/benches/parser.rs
blob: 9479a2dbcf2a7196cfd63de8bb8a5772f1033176 (plain)
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
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);