A command-line benchmarking tool
--sort
option to control the order in the rel. speed comparison and in markup export formats, see #601, #614, #655 (@sharkdp)--log-count
option for histogram plots, see scripts/plot_histogram.py
(@sharkdp)windows-sys
instead of the unmaintained winapi
, see #624, #639, #636, #641 (@clemenswasser)-
as a file name, see #640 and #643 (@sharkdp)--input
option, see #541 and #563 (@snease)-
as the filename in the --export-*
options, see #615 and #623 (@humblepenguinn)--warmup
or --prepare
are in use already, see #570 (@sharkdp)TERM
is not set, see #583 (@nabijaczleweli)cmd.exe
with the /C
option. Use -c
for all other shells, see #568 and #582 (@FilipAndersson245)TERM=dumb
or NO_COLOR=1
, see #542 and #555 (@nabijaczleweli)--min-benchmarking-time <secs>
option, see #527 (@sharkdp)--help
texts of --export-*
options, see #506 and #522 (@Engineer-of-Efficiency)--output={null,pipe,inherit,<FILE>}
option to control
where the output of the benchmarked program is redirected (if at all),
see #377 and #509 (@tavianator, originally suggested by @BurntSushi)--shell=none
/-N
option to disable the intermediate
shell for executing the benchmarked commands. Hyperfine normally
measures and subtracts the shell spawning time, but the intermediate
shell always introduces a certain level of measurement noise. Using
--shell=none
/-N
allows users to benchmark very fast commands
(with a runtime on the order of a few milliseconds). See #336, #429,
and #487 (@cipriancraciun and @sharkdp)--setup
/-s
option that can be used to run make all
or
similar. It runs once per set of tests, like --cleanup
/-c
(@avar)plot_progression.py
script to debug background
interference effects.-s
short option for --style
is now used for
the new --setup
option.--command-name
can now take parameter names from --parameter-*
options, see #351 and #391 (@silathdiir)--export-*
commands are used, result files are created before benchmark execution
to fail early in case of, e.g., wrong permissions. See #306 (@s1ck).--export-*
options are used, result files are written after each individual
benchmark command instead of writing after all benchmarks have finished. See #306 (@s1ck).The -L
/--parameter-list
option can now be specified multiple times to
evaluate all possible combinations of the listed parameters:
hyperfine -L number 1,2 -L letter a,b,c \
"echo {number}{letter}" \
"printf '%s\n' {number}{letter}"
# runs 12 benchmarks: 2 commands (echo and printf) times 6 combinations of
# the "letter" and "number" parameters
See: #253, #318 (@wchargin)
Add CLI option to identify a command with a custom name, see #326 (@scampi)
--parameter-list
or --parameter-scan
, the JSON export format
now contains a dictionary parameters
instead of a single key parameter
. See #253, #318.plot_parametrized.py
script now infers the parameter name, and its --parameter-name
argument has been deprecated. See #253, #318.--warmup
or --*runs
arguments can not be parsed, see #337--style=full
or --style=color
is used.HYPERFINE_RANDOMIZED_ENVIRONMENT_OFFSET
environment variable in order to randomize the memory layout. See #235 and #241 for references and details.plot_whisker.py
script, see #275 (@ghaiklor)hyperfine
is now available on MacPorts for macOS, see #281 (@herbygillot)hyperfine
is now available on OpenBSD, see #289 (@minusf)Package authors: note that Hyperfine now comes with a set of shell completion files and a man page (see above)