From c2545267b8b9d36e19af6eb133e10bff093baf0c Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Mon, 29 May 2017 16:36:25 +0100 Subject: [PATCH] Script to run benchmarks from freshly-cloned repo The intention is to run this in a cron job / scheduled task. --- build/runbenchmarks.sh | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 build/runbenchmarks.sh diff --git a/build/runbenchmarks.sh b/build/runbenchmarks.sh new file mode 100755 index 0000000000..da9ea56a36 --- /dev/null +++ b/build/runbenchmarks.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -e + +if [[ "$3" = "" ]] +then + echo "Usage: runbenchmarks.sh [target-framework...]" + echo "e.g. runbenchmarks.sj benchmark-tmp benchmark-results netcoreapp1.1 net45" + exit 1 +fi + +declare -r REPO=$1 +declare -r RESULTS=$(realpath $2) + +shift 2 + +rm -rf $REPO +git clone https://github.com/nodatime/nodatime.git $REPO --depth=1 + +declare -r COMMIT=$(git -C $REPO rev-parse HEAD) + +if [[ -d $RESULTS/$COMMIT ]] +then + echo "Benchmarks for commit $COMMIT already run. Exiting." + exit 0 +fi + +cd $REPO/src +dotnet restore NodaTime-All.sln +cd NodaTime.Benchmarks + +while (( "$#" )) +do + TARGET_FRAMEWORK=$1 + OUTPUT=$RESULTS/$COMMIT/$TARGET_FRAMEWORK + mkdir -p $OUTPUT + echo "Running benchmarks for $TARGET_FRAMEWORK" + rm -rf BenchmarkDotNet.Artifacts + date -u -Iseconds > $OUTPUT/start.txt + dotnet run -f $TARGET_FRAMEWORK -c Release -- --exporter=briefjson '*' + date -u -Iseconds > $OUTPUT/end.txt + for report in BenchmarkDotNet.Artifacts/results/*-report-brief.json + do + basereport=$(basename $report) + cp $report $OUTPUT/${basereport/-report-brief/} + done + shift +done