Skip to content

Commit da5bd0e

Browse files
committed
modified benchmark
1 parent 4fbfca6 commit da5bd0e

1 file changed

Lines changed: 38 additions & 66 deletions

File tree

benchmark-compare.sh

Lines changed: 38 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,37 @@
11
#!/bin/bash
2-
3-
# Benchmark comparison script for Effekt
4-
# Compares current branch against main branch
5-
62
set -e
73

8-
# Parse command-line arguments
94
SKIP_COMPILE=0
10-
while [[ $# -gt 0 ]]; do
11-
case $1 in
12-
--skip-compile)
13-
SKIP_COMPILE=1
14-
shift
15-
;;
16-
*)
17-
echo "Unknown option: $1"
18-
echo "Usage: $0 [--skip-compile]"
19-
exit 1
20-
;;
21-
esac
22-
done
5+
if [ "$1" = "--skip-compile" ]; then
6+
SKIP_COMPILE=1
7+
fi
238

24-
# Configuration (hardcoded)
259
BACKENDS=("llvm")
26-
WARMUP=5
10+
WARMUP=10
2711
RUNS=50
2812
TARGET_BRANCH="main"
2913
OUTPUT_DIR="benchmark-results"
3014
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
3115
CURRENT_BRANCH=$(git branch --show-current)
3216
CURRENT_BRANCH_SAFE="${CURRENT_BRANCH//\//-}"
3317

34-
# Colors
35-
GREEN='\033[0;32m'
36-
BLUE='\033[0;34m'
37-
YELLOW='\033[1;33m'
38-
NC='\033[0m'
18+
cleanup() {
19+
local current=$(git branch --show-current)
20+
if [ "$current" != "$CURRENT_BRANCH" ]; then
21+
echo ""
22+
echo "Interrupted! Switching back to $CURRENT_BRANCH..."
23+
git checkout -q "$CURRENT_BRANCH"
24+
fi
25+
exit 1
26+
}
27+
28+
trap cleanup SIGINT SIGTERM
3929

4030
if ! command -v hyperfine &> /dev/null; then
4131
echo "Error: hyperfine is not installed"
4232
exit 1
4333
fi
4434

45-
# Check if we're on main branch
4635
if [ "$CURRENT_BRANCH" = "$TARGET_BRANCH" ]; then
4736
echo "Error: You are currently on the $TARGET_BRANCH branch"
4837
echo "Please switch to your feature branch first"
@@ -51,36 +40,39 @@ fi
5140

5241
mkdir -p "$OUTPUT_DIR"
5342

54-
# Define benchmarks with their parameters
5543
declare -A BENCHMARKS=(
56-
["arity_raising/record_addition"]="5000000"
57-
["arity_raising/nested_records"]="2500000"
58-
["arity_raising/record_map"]="10000"
44+
["arity_raising/record_passing"]="25000000"
45+
["arity_raising/matrix_determinant"]="2000000"
5946
)
6047

61-
echo -e "${BLUE}Comparing: $CURRENT_BRANCH vs $TARGET_BRANCH${NC}"
48+
echo "Comparing: $CURRENT_BRANCH vs $TARGET_BRANCH"
6249
echo "Backends: ${BACKENDS[*]}"
6350
echo "Runs: $RUNS, Warmup: $WARMUP"
6451
echo "Skip compilation: $([ $SKIP_COMPILE -eq 1 ] && echo 'yes' || echo 'no')"
6552
echo ""
6653

67-
# Create output directories
6854
for backend in "${BACKENDS[@]}"; do
6955
OUT_CURRENT="out-${CURRENT_BRANCH_SAFE}-${backend}"
7056
OUT_MAIN="out-main-${backend}"
7157
mkdir -p "$OUT_CURRENT" "$OUT_MAIN"
7258
done
7359

7460
if [ $SKIP_COMPILE -eq 0 ]; then
75-
# Build compiler and compile benchmarks on current branch
76-
echo -e "${YELLOW}=== Building compiler on $CURRENT_BRANCH ===${NC}"
61+
62+
if ! git diff-index --quiet HEAD --; then
63+
echo "Error: You have uncommitted changes"
64+
echo "Please commit or stash your changes before running this script"
65+
exit 1
66+
fi
67+
68+
echo "=== Building compiler on $CURRENT_BRANCH ==="
7769
sbt install
7870
echo ""
7971

80-
echo -e "${YELLOW}=== Compiling benchmarks on $CURRENT_BRANCH ===${NC}"
72+
echo "=== Compiling benchmarks on $CURRENT_BRANCH ==="
8173
for backend in "${BACKENDS[@]}"; do
8274
OUT_CURRENT="out-${CURRENT_BRANCH_SAFE}-${backend}"
83-
echo -e "${GREEN}Backend: $backend${NC}"
75+
echo "Backend: $backend"
8476

8577
for bench_path in "${!BENCHMARKS[@]}"; do
8678
bench_name=$(basename "$bench_path")
@@ -91,25 +83,15 @@ if [ $SKIP_COMPILE -eq 0 ]; then
9183
done
9284
echo ""
9385

94-
# Stash any uncommitted changes before switching branches
95-
if ! git diff-index --quiet HEAD --; then
96-
echo -e "${YELLOW}Stashing uncommitted changes before switching to $TARGET_BRANCH...${NC}"
97-
git stash push -m "benchmark-compare temporary stash"
98-
STASHED=1
99-
else
100-
STASHED=0
101-
fi
102-
103-
# Build compiler and compile benchmarks on main branch
104-
echo -e "${YELLOW}=== Building compiler on $TARGET_BRANCH ===${NC}"
86+
echo "=== Building compiler on $TARGET_BRANCH ==="
10587
git checkout -q "$TARGET_BRANCH"
10688
sbt install
10789
echo ""
10890

109-
echo -e "${YELLOW}=== Compiling benchmarks on $TARGET_BRANCH ===${NC}"
91+
echo "=== Compiling benchmarks on $TARGET_BRANCH ==="
11092
for backend in "${BACKENDS[@]}"; do
11193
OUT_MAIN="out-main-${backend}"
112-
echo -e "${GREEN}Backend: $backend${NC}"
94+
echo "Backend: $backend"
11395

11496
for bench_path in "${!BENCHMARKS[@]}"; do
11597
bench_name=$(basename "$bench_path")
@@ -120,27 +102,19 @@ if [ $SKIP_COMPILE -eq 0 ]; then
120102
done
121103
echo ""
122104

123-
# Switch back to current branch
124-
echo -e "${YELLOW}=== Switching back to $CURRENT_BRANCH ===${NC}"
105+
echo "=== Switching back to $CURRENT_BRANCH ==="
125106
git checkout -q "$CURRENT_BRANCH"
126-
127-
# Restore stashed changes if any
128-
if [ $STASHED -eq 1 ]; then
129-
echo -e "${YELLOW}Restoring stashed changes...${NC}"
130-
git stash pop
131-
fi
132107
echo ""
133108
else
134-
echo -e "${YELLOW}=== Skipping compilation (using existing binaries) ===${NC}"
109+
echo "=== Skipping compilation (using existing binaries) ==="
135110
echo ""
136111
fi
137112

138-
echo -e "${BLUE}=== Starting benchmarks ===${NC}"
113+
echo "=== Starting benchmarks ==="
139114
echo ""
140115

141-
# Now run benchmarks using pre-compiled binaries
142116
for backend in "${BACKENDS[@]}"; do
143-
echo -e "${YELLOW}=== Benchmarking backend: $backend ===${NC}"
117+
echo "=== Benchmarking backend: $backend ==="
144118

145119
OUT_CURRENT="out-${CURRENT_BRANCH_SAFE}-${backend}"
146120
OUT_MAIN="out-main-${backend}"
@@ -155,9 +129,8 @@ for backend in "${BACKENDS[@]}"; do
155129
bench_name=$(basename "$bench_path")
156130
params=${BENCHMARKS[$bench_path]}
157131

158-
echo -e "${GREEN} $bench_name${NC}"
132+
echo " $bench_name"
159133

160-
# Set executable paths based on backend
161134
case $backend in
162135
llvm)
163136
current_exec="./$OUT_CURRENT/${bench_name}"
@@ -173,7 +146,6 @@ for backend in "${BACKENDS[@]}"; do
173146
;;
174147
esac
175148

176-
# Run comparison
177149
echo "## $bench_name" >> "$comparison_file"
178150
hyperfine \
179151
--warmup "$WARMUP" \
@@ -185,8 +157,8 @@ for backend in "${BACKENDS[@]}"; do
185157
echo "" >> "$comparison_file"
186158
done
187159

188-
echo -e "${GREEN}Results: $comparison_file${NC}"
160+
echo "Results: $comparison_file"
189161
echo ""
190162
done
191163

192-
echo -e "${GREEN}Done! Results in: $OUTPUT_DIR/${NC}"
164+
echo "Done! Results in: $OUTPUT_DIR/"

0 commit comments

Comments
 (0)