Reorganize command line interface options/parameters

Author: filzrevCreated Jun 23, 2026Updated Sep 12, 2026
LabelsArea:CommandLine

As commented at https://github.com/dotnet/BenchmarkDotNet/pull/3162#issuecomment-4592633337

I wonder if we should use this as an opportunity to consider redesigning the existing command line arguments.

What we have as of today is literally two commands (run benchmarks or display info) and the benchmarking command has way too many options/arguments (I am the one to blame for that). Moreover, it certain things are impossible to configure with command line.

BenchmarkDotNet command line interface are complicated and need to be simplified.

Currently, there are following options/arguments categories are exists. and these options are specified on flat hierarchy. So it can't specify multiple config/job level options via command line interface.

Global level options

  • --help
  • --version
  • --info
  • --list

Config level options

  • --exporters
  • --counters
  • --memory
  • --threading
  • --exceptions
  • --disasm
  • --profiler
  • --allStats
  • --statisticalTest
  • --artifacts
  • --filter
  • --hide
  • Options that are defined at ConfigOptions
  • --maxWidth
  • --buildTimeout
  • --wakeLock

Job level options

Other that are not listed above.