.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.1.1 / _benchmarks / bench.sh
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/_benchmarks/bench.sh b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/_benchmarks/bench.sh
new file mode 100644 (file)
index 0000000..89d8dc6
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+set -e
+
+declare -A PKGS=(
+       ["strconv"]="strconv"
+       ["net/http"]="net/http"
+       ["image/color"]="image/color"
+       ["std"]="std"
+       ["k8s"]="k8s.io/kubernetes/pkg/..."
+)
+
+MIN_CORES=32
+MAX_CORES=32
+INCR_CORES=2
+MIN_GOGC=100
+MAX_GOGC=100
+SAMPLES=10
+WIPE_CACHE=1
+FORMAT=bench
+BIN=$(realpath ./silent-staticcheck.sh)
+
+runBenchmark() {
+       local pkg="$1"
+       local label="$2"
+       local gc="$3"
+       local cores="$4"
+       local wipe="$5"
+
+       if [ $wipe -ne 0 ]; then
+               rm -rf ~/.cache/staticcheck
+       fi
+
+       local out=$(GOGC=$gc GOMAXPROCS=$cores env time -f "%e %M" $BIN $pkg 2>&1)
+       local t=$(echo "$out" | cut -f1 -d" ")
+       local m=$(echo "$out" | cut -f2 -d" ")
+       local ns=$(printf "%s 1000000000 * p" $t | dc)
+       local b=$((m * 1024))
+
+       case $FORMAT in
+               bench)
+                       printf "BenchmarkStaticcheck-%s-GOGC%d-wiped%d-%d  1   %.0f ns/op  %.0f B/op\n" "$label" "$gc" "$wipe" "$cores" "$ns" "$b"
+                       ;;
+               csv)
+                       printf "%s,%d,%d,%d,%.0f,%.0f\n" "$label" "$gc" "$cores" "$wipe" "$ns" "$b"
+                       ;;
+       esac
+}
+
+export GO111MODULE=off
+
+if [ "$FORMAT" = "csv" ]; then
+       printf "packages,gogc,gomaxprocs,wipe-cache,time,memory\n"
+fi
+
+for label in "${!PKGS[@]}"; do
+       pkg=${PKGS[$label]}
+       for gc in $(seq $MIN_GOGC 10 $MAX_GOGC); do
+               for cores in $(seq $MIN_CORES $INCR_CORES $MAX_CORES); do
+                       for i in $(seq 1 $SAMPLES); do
+                               runBenchmark "$pkg" "$label" "$gc" "$cores" 1
+                               runBenchmark "$pkg" "$label" "$gc" "$cores" 0
+                       done
+               done
+       done
+done