Download Latest Version hyperfine-v2.0.0-i686-pc-windows-msvc.zip (589.1 kB) Google Add to Preferred Sources
Home / v2.0.0
Name Modified Size InfoDownloads / Week
Parent folder
hyperfine-musl_2.0.0_armhf.deb 2026-10-07 601.6 kB
hyperfine-v2.0.0-arm-unknown-linux-musleabihf.tar.gz 2026-10-07 698.4 kB
hyperfine-v2.0.0-x86_64-apple-darwin.tar.gz 2026-10-07 651.9 kB
hyperfine-v2.0.0-i686-pc-windows-msvc.zip 2026-10-07 589.1 kB
hyperfine-v2.0.0-x86_64-pc-windows-msvc.zip 2026-10-07 632.7 kB
hyperfine-v2.0.0-aarch64-pc-windows-msvc.zip 2026-10-07 587.1 kB
hyperfine-musl_2.0.0_amd64.deb 2026-10-07 629.3 kB
hyperfine-v2.0.0-arm-unknown-linux-gnueabihf.tar.gz 2026-10-07 663.4 kB
hyperfine-v2.0.0-x86_64-unknown-linux-musl.tar.gz 2026-10-07 737.1 kB
hyperfine_2.0.0_armhf.deb 2026-10-07 569.0 kB
hyperfine-musl_2.0.0_arm64.deb 2026-10-07 581.0 kB
hyperfine-v2.0.0-aarch64-unknown-linux-musl.tar.gz 2026-10-07 679.0 kB
hyperfine-musl_2.0.0_i686.deb 2026-10-07 646.1 kB
hyperfine-v2.0.0-i686-unknown-linux-musl.tar.gz 2026-10-07 742.4 kB
hyperfine-v2.0.0-i686-unknown-linux-gnu.tar.gz 2026-10-07 712.0 kB
hyperfine_2.0.0_i686.deb 2026-10-07 619.0 kB
hyperfine-v2.0.0-aarch64-unknown-linux-gnu.tar.gz 2026-10-07 629.2 kB
hyperfine_2.0.0_arm64.deb 2026-10-07 534.8 kB
hyperfine-v2.0.0-x86_64-unknown-linux-gnu.tar.gz 2026-10-07 683.6 kB
hyperfine_2.0.0_amd64.deb 2026-10-07 581.5 kB
hyperfine-v2.0.0-aarch64-apple-darwin.tar.gz 2026-10-07 609.5 kB
README.md 2026-10-07 5.2 kB
v2.0.0 source code.tar.gz 2026-10-07 214.0 kB
v2.0.0 source code.zip 2026-10-07 241.1 kB
Totals: 24 Items   13.8 MB 2

See the breaking changes below when migrating from hyperfine 1.x.

Features

  • Add support for alternative performance metrics (peak memory usage, instructions, CPU cycles, cache misses, branch misses, ...). By default, hyperfine will now display wall-clock time and peak memory usage, but users can use the new --metrics option to select different performance metrics. The terminal output now shows an overview of all selected performance metrics (see here for a run with more metrics enabled).

image

sh # Parameterized benchmark, comparing different thread counts: hyperfine -P threads 1 8 --env 'OMP_NUM_THREADS={threads}' 'my_command'

  • The plotting and analysis scripts now support different metrics as well, see [#981] and [#984] (@sharkdp).

Breaking changes

  • Benchmarked commands are now executed directly by default, without an intermediate shell (--shell=none). Use -S (an alias for --shell=default) to restore the previous behavior (sh on Unix, cmd.exe on Windows), or select a shell with --shell <SHELL>. See the rationale for this change.
  • Always run --setup, --prepare, --conclude, and --cleanup commands in a shell, even when using --shell=none, see [#990] (@sharkdp).
  • The JSON format for --export-json has changed (schema version 2). The new format now includes metadata, per-run measurements, and statistical summaries for all measured quantities, see [#790] (@sharkdp). Code that reads those exported JSON files must be updated. For example, results[i].mean is now results[i].summary.time_wall_clock.mean, and results[i].times is replaced by results[i].measurements[j].time_wall_clock.value. The new structure looks like this:

python { "schema_version": 2, "primary_metric": "time_wall_clock", "metadata": { "hyperfine_version": "2.0.0", "start_time": "2026-10-06T12:00:00Z", "platform": {"os": "Linux", "architecture": "x86_64"} }, "results": [ { "command": "sleep 1", # Actual command after parameter substitution "name": "wait 1s", # Optional custom or automatically generated name "parameters": {"duration": {"value": "1"}}, # For parametrized runs "environment": {"OMP_NUM_THREADS": "8"}, # Only present with --env overrides "measurements": [ # One entry per run, excluding warmups { "time_wall_clock": {"value": 1.0, "unit": "second"}, "time_cpu": {"value": 0.0, "unit": "second"}, "time_user": {"value": 0.0, "unit": "second"}, "time_system": {"value": 0.0, "unit": "second"}, "memory_peak_resident": {"value": 1048576.0, "unit": "byte"}, "cpu_cycles": {"value": 5000000}, # Hardware counters, when available "instructions": {"value": 10000000}, "exit_code": 0 }, ... # Further runs omitted ], "summary": { "time_wall_clock": { "unit": "second", "count": 30, "mean": 1.0, "stddev": 0.0, "median": 1.0, "min": 1.0, "max": 1.0 } # Other metrics have the same summary structure. } } ] }

Times are always exported in seconds and memory in bytes. Hardware counters and their summaries have no unit field. Unavailable memory measurements and hardware counters are omitted; other available counters may also be included. stddev is null for a single run.

  • --time-unit/-u has been removed. Units can now be selected using the --metrics METRIC[:UNIT],… option, e.g. --metrics time_wall_clock:ms,memory_peak_resident:MiB.
  • --sort has been removed. It complicated hyperfine significantly and doesn't make too much sense with the new output format.
  • --reference and --reference-name have been removed (for now). The first command is always considered as the reference command. Invocations using --reference now show migration guidance to put the reference command first.
  • The format of Markdown, AsciiDoc and org-mode, and CSV exports has also been changed. Markdown, AsciiDoc, and org-mode contain only the primary metric (the first metric selected by --metrics). CSV exports all selected metrics side by side.
Source: README.md, updated 2026-10-07