diff --git a/src/wasm-lib/kcl/benches/compiler_benchmark.rs b/src/wasm-lib/kcl/benches/compiler_benchmark.rs index 4c78a27cd..24f818c64 100644 --- a/src/wasm-lib/kcl/benches/compiler_benchmark.rs +++ b/src/wasm-lib/kcl/benches/compiler_benchmark.rs @@ -1,24 +1,32 @@ -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{black_box, criterion_group, criterion_main, Criterion}; -pub fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("parse + lex cube", |b| b.iter(|| lex_and_parse(CUBE_PROGRAM))); - c.bench_function("parse + lex big kitt", |b| { - b.iter(|| lex_and_parse(include_str!("../../tests/executor/inputs/kittycad_svg.kcl"))) - }); - c.bench_function("parse + lex pipes_on_pipes", |b| { - b.iter(|| lex_and_parse(include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl"))) - }); +pub fn bench_lex(c: &mut Criterion) { + c.bench_function("lex_cube", |b| b.iter(|| lex(CUBE_PROGRAM))); + c.bench_function("lex_big_kitt", |b| b.iter(|| lex(KITT_PROGRAM))); + c.bench_function("lex_pipes_on_pipes", |b| b.iter(|| lex(PIPES_PROGRAM))); +} + +pub fn bench_lex_parse(c: &mut Criterion) { + c.bench_function("parse_lex_cube", |b| b.iter(|| lex_and_parse(CUBE_PROGRAM))); + c.bench_function("parse_lex_big_kitt", |b| b.iter(|| lex_and_parse(KITT_PROGRAM))); + c.bench_function("parse_lex_pipes_on_pipes", |b| b.iter(|| lex_and_parse(PIPES_PROGRAM))); +} + +fn lex(program: &str) { + black_box(kcl_lib::tokeniser::lexer(program)); } fn lex_and_parse(program: &str) { let tokens = kcl_lib::tokeniser::lexer(program); let parser = kcl_lib::parser::Parser::new(tokens); - parser.ast().unwrap(); + black_box(parser.ast().unwrap()); } -criterion_group!(benches, criterion_benchmark); +criterion_group!(benches, bench_lex, bench_lex_parse); criterion_main!(benches); +const KITT_PROGRAM: &str = include_str!("../../tests/executor/inputs/kittycad_svg.kcl"); +const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl"); const CUBE_PROGRAM: &str = r#"fn cube = (pos, scale) => { const sg = startSketchAt(pos) |> line([0, scale], %)