diff --git a/Cargo.toml b/Cargo.toml index c8232edb8..bc473b258 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -146,9 +146,13 @@ path = "src/main.rs" # Run all benchmarks with `cargo bench` # Run individual benchmarks like `cargo bench -- ` e.g. `cargo bench -- parse` [[bench]] -name = "parser_benchmark" +name = "encoder_benchmark" harness = false [[bench]] -name = "encoder_benchmark" +name = "eval_benchmark" harness = false + +[[bench]] +name = "parser_benchmark" +harness = false \ No newline at end of file diff --git a/benches/eval_benchmark.rs b/benches/eval_benchmark.rs new file mode 100644 index 000000000..6f0ec2e92 --- /dev/null +++ b/benches/eval_benchmark.rs @@ -0,0 +1,42 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use nu_cli::eval_source; +use nu_protocol::{PipelineData, Span, Value}; +use nu_utils::{get_default_config, get_default_env}; + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("eval default_env.nu", |b| { + b.iter(|| { + let mut engine_state = nu_command::create_default_context(); + let mut stack = nu_protocol::engine::Stack::new(); + eval_source( + &mut engine_state, + &mut stack, + get_default_env().as_bytes(), + "default_env.nu", + PipelineData::empty(), + ) + }) + }); + + c.bench_function("eval default_config.nu", |b| { + b.iter(|| { + let mut engine_state = nu_command::create_default_context(); + // parsing config.nu breaks without PWD set + engine_state.add_env_var( + "PWD".into(), + Value::string("/some/dir".to_string(), Span::test_data()), + ); + let mut stack = nu_protocol::engine::Stack::new(); + eval_source( + &mut engine_state, + &mut stack, + get_default_config().as_bytes(), + "default_config.nu", + PipelineData::empty(), + ) + }) + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches);