diff options
Diffstat (limited to 'bin/measure_time.sh')
-rwxr-xr-x | bin/measure_time.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/bin/measure_time.sh b/bin/measure_time.sh new file mode 100755 index 0000000..d308b19 --- /dev/null +++ b/bin/measure_time.sh @@ -0,0 +1,40 @@ +#!/bin/sh -e + +YEAR="${YEAR:-$(date +%Y)}" +DAY="${DAY:-$(TZ=EST date '+%d')}" +IMPL="${IMPL:-rust}" +PARTS="${AOC_PARTS:-1 2}" + +ITERS="${ITERS:-10}" + +cd "${YEAR}/${IMPL}/day${DAY}" +case "${IMPL}" in + 'rust') + cargo build --release + EXECUTABLE="../target/release/day${DAY}" + ;; + *) + echo "Unknown implementation: ${IMPL}" >&2 + exit + ;; +esac + +for PART in $(echo ${PARTS}) +do + export AOC_PARTS="${PART}" + OUT="time-${YEAR}-${IMPL}-${DAY}-${PART}.txt" + + export TIMEFMT='%uE' + for I in $(seq "${ITERS}"); do + zsh -c time "${EXECUTABLE}" "${@}" 2>&1 >/dev/null | tail -1 + done >"${OUT}" + + ALL_TIMINGS="$(cat "${OUT}" | sed 's/us/ + /' )" + NO_OF_ITERS=$(echo "${ALL_TIMINGS}" | wc -l) + ARITHM="$(echo "( ${ALL_TIMINGS}" | tr -d '\n'; \ + echo "0 ) / ${NO_OF_ITERS}" )" + MEAN_TIMING=$(( $(echo ${ARITHM}) )) + + printf "${YEAR}-${IMPL}-${DAY}-${PART}: Mean: ${MEAN_TIMING}µs\n" + printf "${YEAR}-${IMPL}-${DAY}-${PART}: Mean: ${MEAN_TIMING}µs\n" >>"${OUT}" +done |