Skip to content

feat(cli): add spnl bench subcommands#878

Merged
starpit merged 1 commit into
IBM:mainfrom
starpit:feat/bench-cli
Feb 18, 2026
Merged

feat(cli): add spnl bench subcommands#878
starpit merged 1 commit into
IBM:mainfrom
starpit:feat/bench-cli

Conversation

@starpit
Copy link
Copy Markdown
Member

@starpit starpit commented Feb 18, 2026

Summary

  • Move all benchmarks from spnl/benches/ into cli/src/bench/ as spnl bench {haystack,niah,ruler,ragcsv} subcommands behind a bench feature flag
  • Criterion is used programmatically for timing stats/baselines; env-var config replaced with clap args
  • Remove spnl/benches/ entirely (code, docs, historical data) along with inner_outer and mt_rag benchmarks
  • Enable bench feature in release-cli.yml and core.yml CI workflows

Usage

spnl bench ruler --model ollama/granite3.3:2b --context-lengths 4000,8000
spnl bench niah --debug --sample-size 5
spnl bench haystack --no-map-reduce --num-docs 2,4
spnl bench ragcsv --file data.csv --concurrency 4

Test plan

  • cargo check -p spnl-cli --features bench compiles clean
  • cargo check -p spnl-cli (without bench) compiles clean
  • cargo check -p spnl compiles clean
  • cargo clippy -p spnl-cli --features bench --no-deps -- -D warnings passes
  • CI runs pass with updated feature flags

🤖 Generated with Claude Code

…elease binaries

Move all benchmarks from spnl/benches/ (Criterion dev harness) into
cli/src/bench/ as proper CLI subcommands behind a `bench` feature flag.
Benchmarks are now runnable from prebuilt release binaries via
`spnl bench {haystack,niah,ruler,ragcsv}` with clap args replacing
env-var configuration. Criterion is used programmatically for timing
stats and baseline comparisons.

- Add cli `bench` feature with criterion, tokenizers, and other deps
- Port haystack, niah, ruler (Criterion-based) and ragcsv (standalone)
- Extract shared utilities: quantiles, progress bars, essay fetching
- Remove spnl/benches/ entirely (code, docs, and historical data)
- Drop inner_outer and mt_rag benchmarks
- Enable bench feature in release-cli.yml and core.yml CI workflows
- Fix clippy warnings inherited from original bench code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Nick Mitchell <nickm@us.ibm.com>
@starpit starpit merged commit e7070a4 into IBM:main Feb 18, 2026
36 checks passed
@starpit starpit deleted the feat/bench-cli branch February 18, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant