Files
sarin/benchmark.sh
2026-02-18 00:03:59 +04:00

66 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
RUNS=20
CMD="go run ./cmd/cli -U http://localhost:80 -r 1_000_000 -c 100"
declare -a times_default
declare -a times_gogcoff
echo "===== Benchmark: default GC ====="
for i in $(seq 1 $RUNS); do
echo "Run $i/$RUNS ..."
start=$(date +%s%N)
$CMD
end=$(date +%s%N)
elapsed=$(( (end - start) / 1000000 )) # milliseconds
times_default+=("$elapsed")
echo " -> ${elapsed} ms"
done
echo ""
echo "===== Benchmark: GOGC=off ====="
for i in $(seq 1 $RUNS); do
echo "Run $i/$RUNS ..."
start=$(date +%s%N)
GOGC=off $CMD
end=$(date +%s%N)
elapsed=$(( (end - start) / 1000000 ))
times_gogcoff+=("$elapsed")
echo " -> ${elapsed} ms"
done
echo ""
echo "============================================"
echo " RESULTS"
echo "============================================"
echo ""
echo "--- Default GC ---"
sum=0
for i in $(seq 0 $((RUNS - 1))); do
echo " Run $((i + 1)): ${times_default[$i]} ms"
sum=$((sum + times_default[$i]))
done
avg_default=$((sum / RUNS))
echo " Average: ${avg_default} ms"
echo ""
echo "--- GOGC=off ---"
sum=0
for i in $(seq 0 $((RUNS - 1))); do
echo " Run $((i + 1)): ${times_gogcoff[$i]} ms"
sum=$((sum + times_gogcoff[$i]))
done
avg_gogcoff=$((sum / RUNS))
echo " Average: ${avg_gogcoff} ms"
echo ""
echo "--- Comparison ---"
if [ "$avg_default" -gt 0 ]; then
diff=$((avg_default - avg_gogcoff))
echo " Difference: ${diff} ms (positive = GOGC=off is faster)"
fi
echo "============================================"