ouch/benchmarks/run-benchmarks.sh
2022-11-23 10:17:23 -05:00

118 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Input files used:
# - `compiler` (27 MB) for compressed formats.
# - `rust` (229 MB) for uncompressed formats.
#
# Compressed formats benchmarked:
# - .tar.gz
# - .zip
#
# Uncompressed formats benchmarked:
# - .tar
set -e
DESCOMPRESSION_CLEANUP="rm output -r"
function call_hyperfine() {
hyperfine "$@" \
--warmup 4 \
--export-markdown "${FUNCNAME[1]}.md"
}
function tar_compression() {
cleanup="rm output.tar"
call_hyperfine \
'ouch compress rust output.tar' \
'tar -cvf output.tar rust' \
--prepare "$cleanup || true"
$cleanup
}
function tar_decompression() {
echo "Creating tar archive to benchmark decompression..."
ouch compress rust input.tar --yes &> /dev/null
call_hyperfine \
'ouch decompress input.tar --dir output' \
'tar -xv -C output -f input.tar' \
--prepare "$DESCOMPRESSION_CLEANUP || true" \
--prepare "$DESCOMPRESSION_CLEANUP || true ; mkdir output"
$DESCOMPRESSION_CLEANUP
}
function tar_gz_compression() {
cleanup="rm output.tar.gz"
call_hyperfine \
'ouch compress compiler output.tar.gz' \
'tar -cvzf output.tar.gz compiler' \
--prepare "$cleanup || true"
$cleanup
}
function tar_gz_decompression() {
echo "Creating tar.gz archive to benchmark decompression..."
ouch compress compiler input.tar.gz --yes &> /dev/null
call_hyperfine \
'ouch decompress input.tar.gz --dir output' \
'tar -xvz -C output -f input.tar.gz' \
--prepare "$DESCOMPRESSION_CLEANUP || true" \
--prepare "$DESCOMPRESSION_CLEANUP || true ; mkdir output"
$DESCOMPRESSION_CLEANUP
}
function zip_compression() {
cleanup="rm output.zip"
call_hyperfine \
'zip output.zip -r compiler' \
'ouch compress compiler output.zip' \
--prepare "$cleanup || true"
$cleanup
}
function zip_decompression() {
echo "Creating zip archive to benchmark decompression..."
ouch compress compiler input.zip --yes &> /dev/null
call_hyperfine \
'ouch decompress input.zip --dir output' \
'unzip input.zip -d output' \
--prepare "$DESCOMPRESSION_CLEANUP || true"
$DESCOMPRESSION_CLEANUP
}
function run_benches() {
tar_compression
tar_decompression
tar_gz_compression
tar_gz_decompression
zip_compression
zip_decompression
}
function concatenate_results() {
cat tar_compression.md <(echo) \
tar_decompression.md <(echo) \
tar_gz_compression.md <(echo) \
tar_gz_decompression.md <(echo) \
zip_compression.md <(echo) \
zip_decompression.md > results.md
}
run_benches
concatenate_results
echo
echo "check results at results.md"