ferraus bench

Measure real-time factors of every effect on this machine

Synopsis

ferraus bench [options]

What it does

Runs each single-input effect with its defaults on a synthetic stereo signal and reports how many times faster than real time it ran. With --baseline, fails (exit 9) when any effect is more than --tolerance slower than the saved numbers.

Examples

Measure three effects

ferraus bench --only compress,reverb,limit

Detect performance regressions

ferraus bench --save bench.json && ferraus bench --baseline bench.json

Measure every effect on a 30-second signal; results as JSON

ferraus bench --duration 30s --json

Fail only when an effect is more than 25% slower than the baseline

ferraus bench --baseline bench.json --tolerance 25%

Options

FlagTypeDefaultMeaning
--onlylist—Comma list of effects to measure (default: every fx-capable effect)
--durationtime10sLength of the synthetic test signal
--savepath—Write the results as a baseline JSON file
--baselinepath—Compare against a baseline JSON file
--tolerancepercent15%Allowed slowdown versus the baseline before failing

Global options

Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.

Exit codes

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
8Cancelled
70Internal error (bug)

Common mistakes

  • Beat-based times (4b, 1/4) need a tempo: pass --bpm or write 4b@120.
  • Percentages accept 80% or the fraction 0.8; a bare 80 means 80x, not 80%.

For models

  • MCP tool: ferraus_bench
  • Schema: ferraus schema bench
  • Pipeline: { op: bench, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "bench", "defaults": {"duration": "10s", "tolerance": "15%"}}