# 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>
Welcome to the standard library of `nushell`!
The standard library is a pure-nushell
collection of custom commands which
provide interactive utilities and building blocks for users writing casual scripts or complex applications.
To see what's here:
> use std
> scope commands | select name description | where name =~ "std "
#┬───────────name────────────┬───────────────────description───────────────────
0│std assert │Universal assert command
1│std assert equal │Assert $left == $right
2│std assert error │Assert that executing the code generates an error
3│std assert greater │Assert $left > $right
4│std assert greater or equal│Assert $left >= $right
... ...
─┴───────────────────────────┴─────────────────────────────────────────────────
🧰 Using the standard library in the REPL or in scripts
All commands in the standard library must be "imported" into the running environment
(the interactive read-execute-print-loop (REPL) or a .nu
script) using the
use
command.
You can choose to import the whole module, but then must refer to individual commands with a std
prefix, e.g:
use std
std log debug "Running now"
std assert (1 == 2)
Or you can enumerate the specific commands you want to import and invoke them without the std
prefix.
use std ["log debug" assert]
log debug "Running again"
assert (2 == 1)
This is probably the form of import you'll want to add to your env.nu
for interactive use.
✏️ contribute to the standard library
You're invited to contribute to the standard library! See CONTRIBUTING.md for details