From f6e248f34367d959cb866b4ac0599e6275a200a2 Mon Sep 17 00:00:00 2001 From: Filip Andersson <17986183+FilipAndersson245@users.noreply.github.com> Date: Tue, 27 Feb 2024 18:55:26 +0100 Subject: [PATCH] Benchmark changes (#11998) # Description This PR does a total of 3 things, 1. It fixes an error when running the `cargo bench` suit where nushell constants where not set correctly ending in an error when running the code. 2. It removes 2 redundant benchmark runs as these where duplicates of existing ones. 3. It reduced encoding and decoding benchmark suit future, only having 4 benches instead of the previous 8. # User-Facing Changes # Tests + Formatting # After Submitting --- benches/benchmarks.rs | 40 +++++++++------------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/benches/benchmarks.rs b/benches/benchmarks.rs index a7beedbbad..e4591290f5 100644 --- a/benches/benchmarks.rs +++ b/benches/benchmarks.rs @@ -2,7 +2,9 @@ use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; use nu_cli::eval_source; use nu_parser::parse; use nu_plugin::{Encoder, EncodingType, PluginCallResponse, PluginOutput}; -use nu_protocol::{engine::EngineState, PipelineData, Span, Value}; +use nu_protocol::{ + engine::EngineState, eval_const::create_nu_constant, PipelineData, Span, Value, NU_VARIABLE_ID, +}; use nu_utils::{get_default_config, get_default_env}; use std::path::{Path, PathBuf}; @@ -61,34 +63,6 @@ fn parser_benchmarks(c: &mut Criterion) { BatchSize::SmallInput, ) }); - - c.bench_function("eval default_env.nu", |b| { - b.iter(|| { - 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(), - false, - ) - }) - }); - - c.bench_function("eval default_config.nu", |b| { - b.iter(|| { - 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(), - false, - ) - }) - }); } fn eval_benchmarks(c: &mut Criterion) { @@ -101,6 +75,10 @@ fn eval_benchmarks(c: &mut Criterion) { Value::string(home_path.to_string_lossy(), Span::test_data()), ); + let nu_const = create_nu_constant(&engine_state, Span::unknown()) + .expect("Failed to create nushell constant."); + engine_state.set_variable_const_val(NU_VARIABLE_ID, nu_const); + c.bench_function("eval default_env.nu", |b| { b.iter(|| { let mut stack = nu_protocol::engine::Stack::new(); @@ -143,7 +121,7 @@ fn encoding_test_data(row_cnt: usize, col_cnt: usize) -> Value { fn encoding_benchmarks(c: &mut Criterion) { let mut group = c.benchmark_group("Encoding"); - let test_cnt_pairs = [(100, 5), (100, 15), (10000, 5), (10000, 15)]; + let test_cnt_pairs = [(100, 5), (10000, 15)]; for (row_cnt, col_cnt) in test_cnt_pairs.into_iter() { for fmt in ["json", "msgpack"] { group.bench_function(&format!("{fmt} encode {row_cnt} * {col_cnt}"), |b| { @@ -162,7 +140,7 @@ fn encoding_benchmarks(c: &mut Criterion) { fn decoding_benchmarks(c: &mut Criterion) { let mut group = c.benchmark_group("Decoding"); - let test_cnt_pairs = [(100, 5), (100, 15), (10000, 5), (10000, 15)]; + let test_cnt_pairs = [(100, 5), (10000, 15)]; for (row_cnt, col_cnt) in test_cnt_pairs.into_iter() { for fmt in ["json", "msgpack"] { group.bench_function(&format!("{fmt} decode for {row_cnt} * {col_cnt}"), |b| {