summaryrefslogtreecommitdiffstats
path: root/third_party/rust/jsparagus-parser/benches/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/jsparagus-parser/benches/parser.rs')
-rw-r--r--third_party/rust/jsparagus-parser/benches/parser.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/third_party/rust/jsparagus-parser/benches/parser.rs b/third_party/rust/jsparagus-parser/benches/parser.rs
new file mode 100644
index 0000000000..9479a2dbcf
--- /dev/null
+++ b/third_party/rust/jsparagus-parser/benches/parser.rs
@@ -0,0 +1,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);