Groovy JMH performance summary (normalised against trailing 90-day baseline)

For every benchmark, the value from each run is divided by the mean of that same benchmark's values over the preceding 90 days (its rolling "normal"). Benchmarks reported as ops/ms are kept as-is; benchmarks reported in time-per-op units (ms/op, us/op, …) are inverted, so on both charts higher is always faster and 1.0 means "in line with the last 90 days". Each solid line is the geometric mean of those per-benchmark ratios across a suite; the dashed overlay is a 7-run rolling median of those points, which smooths through CI-runner noise so the trend stays readable when an individual runner has a slow day. Click any solid-line point to open its commit on GitHub. The core and grails suites each recombine their two CI-split halves (A–G/H–Z, A–D/E–Z); indy and classic are kept on separate charts.

Invokedynamic (indy)

Classic (non-indy)

Per-suite raw data under dev/bench/jmh/<suite>/<mode>/data.js · Generated by github-action-benchmark · Apache Groovy benchmark home