Skip to content

Releases: sharkdp/hyperfine

v1.18.0

05 Oct 08:07
Compare
Choose a tag to compare

Features

  • Add support for microseconds via --time-unit microsecond, see #684 (@sharkdp)

Bugfixes

v1.17.0

04 Jun 06:22
Compare
Choose a tag to compare

Features

  • Add new --sort option to control the order in the rel. speed comparison and in markup export formats, see #601, #614, #655 (@sharkdp)
  • Parameters which are unused in the command line are now displayed in parentheses, see #600 and #644 (@sharkdp).
  • Added --log-count option for histogram plots, see scripts/plot_histogram.py (@sharkdp)

Changes

Bugfixes

  • Do not export intermediate results to stdout when using - as a file name, see #640 and #643 (@sharkdp)
  • Markup exporting does not fail if benchmark results are zero, see #642 (@sharkdp)

v1.16.1

21 Mar 20:06
Compare
Choose a tag to compare

Bugfixes

v1.16.0

15 Mar 09:14
Compare
Choose a tag to compare

Features

Changes

  • Improve hints for outlier warnings if --warmup or --prepare are in use already, see #570 (@sharkdp)

Bugfixes

Other

v1.15.0

07 Sep 07:30
Compare
Choose a tag to compare

Features

  • Disable colorized output in case of TERM=dumb or NO_COLOR=1, see #542 and #555 (@nabijaczleweli)
  • Add new (experimental) --min-benchmarking-time <secs> option, see #527 (@sharkdp)

Bugfixes

Other

v1.14.0

17 May 20:58
Compare
Choose a tag to compare
  • Add a new --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)
  • Add Emacs org-mode as a new export format, see #491 (@ppaulweber)
  • Relax glibc requirements, see #508 and #512 (@sharkdp)

v1.13.0

05 Mar 11:59
Compare
Choose a tag to compare

Features

  • Added a new --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)
  • Added --setup/-s option that can be used to run make all or
    similar. It runs once per set of tests, like --cleanup/-c (@avar)
  • Added new plot_progression.py script to debug background
    interference effects.

Changes

  • Breaking change: the -s short option for --style is now used for
    the new --setup option.
  • The environment offset randomization is now also available on Windows,
    see #484

Other

  • Improved documentation and test coverage, cleaned up code base for
    future improvements.

v1.12.0

17 Oct 17:47
Compare
Choose a tag to compare

Features

  • --command-name can now take parameter names from --parameter-* options, see #351 and #391 (@silathdiir)
  • Exit codes (or signals) are now printed in cases of command failures, see #342 (@KaindlJulian)
  • Exit codes are now part of the JSON output, see #371 (@JordiChauzi)
  • Colorized output should now be enabled on Windows by default, see #427

Changes

  • When --export-* commands are used, result files are created before benchmark execution
    to fail early in case of, e.g., wrong permissions. See #306 (@s1ck).
  • When --export-* options are used, result files are written after each individual
    benchmark command instead of writing after all benchmarks have finished. See #306 (@s1ck).
  • Reduce number of shell startup time measurements from 200 to 50, generally speeding up benchmarks. See #378
  • User and system time are now in consistent time units, see #408 and #409 (@film42)

v1.11.0

16 Oct 22:13
Compare
Choose a tag to compare

Features

  • 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)

Changes

  • When parameters are used with --parameter-list or --parameter-scan, the JSON export format
    now contains a dictionary parameters instead of a single key parameter. See #253, #318.
  • The plot_parametrized.py script now infers the parameter name, and its --parameter-name
    argument has been deprecated. See #253, #318.

Bugfixes

  • Fix a bug in the outlier detection which would only detect "slow outliers" but not the fast
    ones (runs that are much faster than the rest of the benchmarking runs), see #329
  • Better error messages for very fast commands that would lead to inf/nan results in the relative
    speed comparison, see #319
  • Show error message if --warmup or --*runs arguments can not be parsed, see #337
  • Keep output colorized when the output is not interactive and --style=full or --style=color is used.

v1.10.0

25 May 14:21
Compare
Choose a tag to compare

Features

  • Hyperfine now comes with shell completion files for Bash, Zsh, Fish and PowerShell, see #290 (@four0000four).
  • Hyperfine now comes with a basic man page, see #257 (@cadeef)
  • During execution of benchmarks, hyperfine will now set a HYPERFINE_RANDOMIZED_ENVIRONMENT_OFFSET environment variable in order to randomize the memory layout. See #235 and #241 for references and details.
  • A few enhancements for the histogram plotting scripts and the
    advanced statistics script
  • Updates for the plot_whisker.py script, see #275 (@ghaiklor)

Bugfixes

  • Fix Spin Icon on Windows, see #229
  • A few typos have been fixed, see #292 (@McMartin)

Packaging

Package authors: note that Hyperfine now comes with a set of shell completion files and a man page (see above)