Check the speed-up the PR claims (build-logic tasks 92 → 18; cold build ~31s → ~15s) and confirm that everyday development scenarios do not regress.
- baseline =
301cfb7a5(the PR's merge-base with master, i.e. master without the PR) →/tmp/pgjdbc-bench/baseline - pr-4143 =
3cfca4f4b→/tmp/pgjdbc-bench/pr
baseline is the merge-base rather than the master tip: the only commits between them are docs/test changes that do not touch build-logic, so this isolates the PR's effect alone.
The PR's saving lives in compiling the build-logic included build. gradle-profiler cannot delete arbitrary directories between iterations, so it cannot on its own reproduce a fully cold build-logic compile (where the 31→15 figure comes from). The measurement therefore splits in two:
-
gradle-profiler — statistically sound scenarios (warm-ups + N iterations, mean/stddev/CI):
config_help— configuration only, on a cold daemon (JVM start + loading the build-logic plugin classpath + configuration). This is where the PR's wider classpath shows up.compile_cold—:postgresql:compileJava, cold daemon, warm outputs. This is where the "92 → 18 tasks" claim shows up.clean_compile—clean+ compileJava on a warm daemon. Control: the PR must not slow down compiling the main code.edit_buildlogic— edit a build-logic Kotlin file between runs. The closest the profiler can get to "build-logic changed". Note: the file path differs between branches (baseline uses thejava-comment-preprocessormodule, the PR uses the singleconventionsmodule), so the scenario lives inmutate-baseline.scenarios/mutate-pr.scenarios. This is also where the god-module downside surfaces: in the PR an edit to one file recompiles the wholeconventionsmodule, against only a small module on baseline.
-
cold-buildlogic.sh — a coarse but direct measure of a cold
build-logiccompile: it stops the daemon, deletes the build-logic outputs, and times:postgresql:compileJava. This reproduces the claimed 31→15.
# 1) gradle-profiler (≈15–30 min total; the first run downloads Gradle 9.5.1 and the plugins)
bash /tmp/pgjdbc-bench/run.sh
# 2) Cold build-logic (≈3 runs per branch)
bash /tmp/pgjdbc-bench/cold-buildlogic.sh 3gradle-profiler reports: out-baseline/benchmark.html and out-pr/benchmark.html (plus benchmark.csv for collating into one table).
- Compare same-named scenarios between
out-baselineandout-pr. - Look at the standard deviation and confidence interval, not just the mean: the claimed "31s→15s" comes from a single run with no spread, whereas the spread is visible here.
- To answer "why" (confirm the hypothesis about redundant Kotlin compilations), add
--profile jfror--profile async-profilerto the run and read the flame graph.