mirror of
https://github.com/nushell/nushell.git
synced 2025-06-08 11:06:55 +02:00
# Description Like [hyperfine](https://github.com/sharkdp/hyperfine), I have added the option to the `bench` command to benchmark multiple commands and then compare the results. ``` → bench { ls -a | is-empty } { fd | is-empty } # | code | mean | min | max | std | ratio ---+----------------------+------------------+-----------------+------------------+-------------+------- 0 | { ls -a | is-empty } | 3ms 816µs 562ns | 3ms 670µs 400ns | 4ms 334µs | 146µs 304ns | 1.00 1 | { fd | is-empty } | 33ms 325µs 304ns | 31ms 963µs | 36ms 328µs 500ns | 701µs 295ns | 8.73 → bench -p { ls -a | is-empty } { fd | is-empty } Benchmark 1: { ls -a | is-empty } 3ms 757µs 124ns +/- 103µs 165ns Benchmark 2: { fd | is-empty } 33ms 403µs 680ns +/- 704µs 904ns { ls -a | is-empty } ran 8.89 times faster than { fd | is-empty } ``` When passing a single closure, it should behave the same except that now, the `--verbose` flag controls whether the durations of every round is printed, and the progress indicator is in it's own flag `--progress`. # User-Facing Changes There are user-facing changes, but I don't think anyone is using the output of `bench` programmatically so it hopefully won't break anything. --------- Co-authored-by: Bahex <Bahex@users.noreply.github.com>