diff --git a/README.md b/README.md index 6b81e51..e5d553c 100644 --- a/README.md +++ b/README.md @@ -40,26 +40,6 @@ option: hyperfine --min-runs 5 'sleep 0.2' 'sleep 3.2' ``` -### Tip: aliases and functions - -Aliases and shell functions can't be benchmarked directly, but you may try to put them in a separate -file and benchmark _that_: - -```bash -echo 'my_function() { sleep 1 }' > /tmp/my_function.sh -echo 'alias my_alias="sleep 1"' > /tmp/my_alias.sh -hyperfine 'source /tmp/my_function.sh; eval my_function' -hyperfine 'source /tmp/my_alias.sh; eval my_alias' -``` - -If you're using bash, you may also want to `export` functions (can't do that with aliases, though): - -``` -$ my_function() { sleep 1; } -$ export -f my_function -$ hyperfine my_function -``` - ### Warmup runs and preparation commands If the program execution time is limited by disk I/O, the benchmarking results can be heavily @@ -97,6 +77,26 @@ hyperfine --parameter-scan delay 0.3 0.7 -D 0.2 'sleep {delay}' ``` This runs `sleep 0.3`, `sleep 0.5` and `sleep 0.7`. +### Shell functions and aliases + +If you are using bash, you can export shell functions to directly benchmark them with hyperfine: + +``` +$ my_function() { sleep 1; } +$ export -f my_function +$ hyperfine my_function +``` + +If you are using a different shell, or if you want to benchmark shell aliases, you may try to put +them in a separate file: + +```bash +echo 'my_function() { sleep 1 }' > /tmp/my_function.sh +echo 'alias my_alias="sleep 1"' > /tmp/my_alias.sh +hyperfine 'source /tmp/my_function.sh; eval my_function' +hyperfine 'source /tmp/my_alias.sh; eval my_alias' +``` + ### Export results Hyperfine has multiple options for exporting benchmark results: CSV, JSON, Markdown (see `--help`