mirror of https://github.com/etcd-io/bbolt.git
71 lines
2.2 KiB
Bash
Executable File
71 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# https://github.com/kubernetes/kube-state-metrics/blob/main/tests/compare_benchmarks.sh (originally written by mxinden)
|
|
|
|
# exit immediately when a command fails
|
|
set -e
|
|
# only exit with zero if all commands of the pipeline exit successfully
|
|
set -o pipefail
|
|
# error on unset variables
|
|
set -u
|
|
|
|
[[ "$#" -eq 1 ]] || echo "One argument required, $# provided."
|
|
|
|
REF_CURRENT="$(git rev-parse --abbrev-ref HEAD)"
|
|
BASE_TO_COMPARE=$1
|
|
|
|
RESULT_CURRENT="$(mktemp)-${REF_CURRENT}"
|
|
RESULT_TO_COMPARE="$(mktemp)-${BASE_TO_COMPARE}"
|
|
|
|
BENCH_COUNT=${BENCH_COUNT:-10}
|
|
BENCHSTAT_CONFIDENCE_LEVEL=${BENCHSTAT_CONFIDENCE_LEVEL:-0.9}
|
|
BENCHSTAT_FORMAT=${BENCHSTAT_FORMAT:-"text"}
|
|
BENCH_PARAMETERS=${BENCH_PARAMETERS:-"-count 2000000 -batch-size 10000"}
|
|
|
|
if [[ "${BENCHSTAT_FORMAT}" == "csv" ]] && [[ -z "${BENCHSTAT_OUTPUT_FILE}" ]]; then
|
|
echo "BENCHSTAT_FORMAT is set to csv, but BENCHSTAT_OUTPUT_FILE is not set."
|
|
exit 1
|
|
fi
|
|
|
|
function bench() {
|
|
local output_file
|
|
output_file="$1"
|
|
make build
|
|
|
|
for _ in $(seq "$BENCH_COUNT"); do
|
|
echo ./bin/bbolt bench -gobench-output -profile-mode n ${BENCH_PARAMETERS}
|
|
# shellcheck disable=SC2086
|
|
./bin/bbolt bench -gobench-output -profile-mode n ${BENCH_PARAMETERS} >> "${output_file}"
|
|
done
|
|
}
|
|
|
|
function main() {
|
|
echo "### Benchmarking PR ${REF_CURRENT}"
|
|
bench "${RESULT_CURRENT}"
|
|
echo ""
|
|
echo "### Done benchmarking ${REF_CURRENT}"
|
|
|
|
echo "### Benchmarking base ${BASE_TO_COMPARE}"
|
|
git checkout "${BASE_TO_COMPARE}"
|
|
bench "${RESULT_TO_COMPARE}"
|
|
echo ""
|
|
echo "### Done benchmarking ${BASE_TO_COMPARE}"
|
|
|
|
git checkout -
|
|
|
|
echo ""
|
|
echo "### Result"
|
|
echo "BASE=${BASE_TO_COMPARE} HEAD=${REF_CURRENT}"
|
|
|
|
if [[ "${BENCHSTAT_FORMAT}" == "csv" ]]; then
|
|
benchstat -format=csv -confidence="${BENCHSTAT_CONFIDENCE_LEVEL}" BASE="${RESULT_TO_COMPARE}" HEAD="${RESULT_CURRENT}" 2>/dev/null 1>"${BENCHSTAT_OUTPUT_FILE}"
|
|
else
|
|
if [[ -z "${BENCHSTAT_OUTPUT_FILE}" ]]; then
|
|
benchstat -confidence="${BENCHSTAT_CONFIDENCE_LEVEL}" BASE="${RESULT_TO_COMPARE}" HEAD="${RESULT_CURRENT}"
|
|
else
|
|
benchstat -confidence="${BENCHSTAT_CONFIDENCE_LEVEL}" BASE="${RESULT_TO_COMPARE}" HEAD="${RESULT_CURRENT}" 1>"${BENCHSTAT_OUTPUT_FILE}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
main
|