#!/usr/bin/env bash
set -euo pipefail
ITERATIONS=5
show_help() {
echo "Usage: $(basename "$0") [-i|--iterations N] [-h|--help]"
exit "${1:-0}"
}
if ! OPTS=$(getopt -o i:h --long iterations:,help -n "$(basename "$0")" -- "$@"); then
show_help 1
fi
eval set -- "$OPTS"
while true; do
case "$1" in
-i|--iterations)
ITERATIONS="$2"
shift 2
;;
-h|--help)
show_help
;;
*)
break
;;
esac
done
cleanup() {
for i in $(seq 1 "$ITERATIONS"); do
rm -rf "fixtures-$i"
done
}
trap cleanup EXIT
cleanup
run_benchmark() {
local name=$1
local script=$2
shift 2
echo "-----------"
for i in $(seq 1 "$ITERATIONS"); do
local fixture="fixtures-$i"
mkdir "$fixture"
cd "fixtures-$i"
fuzzponent -d 2 -s 20
cd ..
echo "$name $i"
node "$script" "$fixture" "$@"
if [[ -d "$fixture" ]]; then rmdir "$fixture"; fi
done
}
run_benchmark "rimraf (async)" "rimraf.js" "async"
run_benchmark "rimraf (sync)" "rimraf.js" "sync"
run_benchmark "recursive delete" "recursive-delete.js"
run_benchmark "nodejs rm (promises)" "nodejs-rm.js" "promises"
run_benchmark "nodejs rm (callback)" "nodejs-rm.js" "callback"
run_benchmark "nodejs rm (sync)" "nodejs-rm.js" "sync"