Skip to content

Commit 3004f87

Browse files
committed
Add Paper A-B performance benchmark
1 parent b81b6a1 commit 3004f87

4 files changed

Lines changed: 456 additions & 0 deletions

File tree

.github/workflows/benchmark.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: A-B Performance Benchmark
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
benchmark:
11+
name: Paper 26.1.2 A-B benchmark
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 20
14+
15+
steps:
16+
- name: Check out repository
17+
uses: actions/checkout@v4
18+
19+
- name: Set up Java 25
20+
uses: actions/setup-java@v4
21+
with:
22+
distribution: temurin
23+
java-version: "25"
24+
25+
- name: Set up Gradle
26+
uses: gradle/actions/setup-gradle@v4
27+
28+
- name: Build disposable benchmark plugin
29+
run: ./gradlew benchmarkJar --no-daemon --no-build-cache --rerun-tasks
30+
31+
- name: Download stable Paper 26.1.2
32+
env:
33+
PAPER_USER_AGENT: InteractionVisualizer-Benchmark/1.0 (https://github.com/EllanServer/InteractionVisualizer)
34+
run: |
35+
mkdir -p benchmark-server/plugins
36+
BUILDS=$(curl --fail --silent --show-error \
37+
-H "User-Agent: $PAPER_USER_AGENT" \
38+
https://fill.papermc.io/v3/projects/paper/versions/26.1.2/builds)
39+
PAPER_URL=$(echo "$BUILDS" | jq -r 'first(.[] | select(.channel == "STABLE") | .downloads."server:default".url) // empty')
40+
test -n "$PAPER_URL"
41+
curl --fail --location --show-error \
42+
-H "User-Agent: $PAPER_USER_AGENT" \
43+
--output benchmark-server/server.jar "$PAPER_URL"
44+
cp build/libs/InteractionVisualizer-*-benchmark.jar benchmark-server/plugins/
45+
46+
- name: Configure isolated benchmark server
47+
working-directory: benchmark-server
48+
run: |
49+
echo 'eula=true' > eula.txt
50+
cat > server.properties <<'EOF'
51+
online-mode=false
52+
level-name=benchmark-world
53+
level-type=minecraft:flat
54+
generate-structures=false
55+
spawn-protection=0
56+
view-distance=3
57+
simulation-distance=3
58+
max-players=1
59+
sync-chunk-writes=false
60+
EOF
61+
62+
- name: Run alternating A-B measurements
63+
working-directory: benchmark-server
64+
run: |
65+
java -Xms2G -Xmx2G -XX:+UseG1GC -jar server.jar --nogui | tee benchmark-server.log
66+
test -f plugins/InteractionVisualizerBenchmark/benchmark-results.jsonl
67+
68+
- name: Publish benchmark results
69+
if: always()
70+
uses: actions/upload-artifact@v4
71+
with:
72+
name: interactionvisualizer-ab-${{ github.sha }}
73+
path: |
74+
benchmark-server/plugins/InteractionVisualizerBenchmark/benchmark-results.jsonl
75+
benchmark-server/benchmark-server.log
76+
if-no-files-found: warn
77+
retention-days: 30

0 commit comments

Comments
 (0)