This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit cb35b63c765103cac16c036dfbbdb67f47a6de63
Author: James Fredley <[email protected]>
AuthorDate: Thu Feb 26 17:58:23 2026 -0500

    Move grails benchmarks to subpackage and split perf workflows via matrix
    
    Move the 4 Grails-like benchmark files into org.apache.groovy.perf.grails
    subpackage and add a matrix strategy to the jmh-perf and jmh-perf-classic
    workflows so core and grails benchmarks run as parallel CI jobs, each with
    its own 60-minute budget. Restore original @Fork(2) and 
@Measurement(iterations=5)
    settings now that the benchmarks have dedicated time slots.
---
 .github/workflows/groovy-jmh-perf-classic.yml              | 14 ++++++++++----
 .github/workflows/groovy-jmh-perf.yml                      | 14 ++++++++++----
 .../apache/groovy/perf/{ => grails}/CategoryBench.groovy   |  6 +++---
 .../groovy/perf/{ => grails}/DynamicDispatchBench.groovy   |  6 +++---
 .../perf/{ => grails}/GrailsLikePatternsBench.groovy       |  6 +++---
 .../groovy/perf/{ => grails}/MetaclassChangeBench.groovy   |  6 +++---
 6 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/groovy-jmh-perf-classic.yml 
b/.github/workflows/groovy-jmh-perf-classic.yml
index d3f7d7159f..276c4e11b8 100644
--- a/.github/workflows/groovy-jmh-perf-classic.yml
+++ b/.github/workflows/groovy-jmh-perf-classic.yml
@@ -24,6 +24,12 @@ jobs:
   test:
     strategy:
       fail-fast: false
+      matrix:
+        include:
+          - suite: core
+            pattern: '\\.perf\\.[A-Z]'
+          - suite: grails
+            pattern: '\\.perf\\.grails\\.'
     runs-on: ubuntu-latest
     env:
       DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
@@ -35,11 +41,11 @@ jobs:
           java-version: 21
           check-latest: true
       - uses: gradle/actions/setup-gradle@v5
-      - name: Benchmarks (perf classic)
-        run: ./gradlew perf:jmh -PbenchInclude=\\.perf\\. -Pindy=false
+      - name: Benchmarks (perf classic ${{ matrix.suite }})
+        run: ./gradlew perf:jmh -PbenchInclude=${{ matrix.pattern }} 
-Pindy=false
         timeout-minutes: 60
-      - name: Upload reports-jmh-perf-classic
+      - name: Upload reports-jmh-perf-classic-${{ matrix.suite }}
         uses: actions/upload-artifact@v6
         with:
-          name: reports-jmh-perf-classic
+          name: reports-jmh-perf-classic-${{ matrix.suite }}
           path: subprojects/performance/build/results/jmh/
diff --git a/.github/workflows/groovy-jmh-perf.yml 
b/.github/workflows/groovy-jmh-perf.yml
index 359535509b..b60b596b6d 100644
--- a/.github/workflows/groovy-jmh-perf.yml
+++ b/.github/workflows/groovy-jmh-perf.yml
@@ -24,6 +24,12 @@ jobs:
   test:
     strategy:
       fail-fast: false
+      matrix:
+        include:
+          - suite: core
+            pattern: '\\.perf\\.[A-Z]'
+          - suite: grails
+            pattern: '\\.perf\\.grails\\.'
     runs-on: ubuntu-latest
     env:
       DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
@@ -35,12 +41,12 @@ jobs:
           java-version: 21
           check-latest: true
       - uses: gradle/actions/setup-gradle@v5
-      - name: Benchmarks (perf)
-        run: ./gradlew perf:jmh -PbenchInclude=\\.perf\\.
+      - name: Benchmarks (perf ${{ matrix.suite }})
+        run: ./gradlew perf:jmh -PbenchInclude=${{ matrix.pattern }}
         timeout-minutes: 60
-      - name: Upload reports-jmh-perf
+      - name: Upload reports-jmh-perf-${{ matrix.suite }}
         uses: actions/upload-artifact@v6
         with:
-          name: reports-jmh-perf
+          name: reports-jmh-perf-${{ matrix.suite }}
           path: subprojects/performance/build/results/jmh/
 
diff --git 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/CategoryBench.groovy
 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/CategoryBench.groovy
similarity index 98%
rename from 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/CategoryBench.groovy
rename to 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/CategoryBench.groovy
index 1cb4f8f80f..68aa32b0f5 100644
--- 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/CategoryBench.groovy
+++ 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/CategoryBench.groovy
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.groovy.perf
+package org.apache.groovy.perf.grails
 
 import org.openjdk.jmh.annotations.*
 import org.openjdk.jmh.infra.Blackhole
@@ -39,8 +39,8 @@ import java.util.concurrent.TimeUnit
  * validation helpers, and domain class extensions.
  */
 @Warmup(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Measurement(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Fork(1)
+@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
+@Fork(2)
 @BenchmarkMode(Mode.AverageTime)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @State(Scope.Thread)
diff --git 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/DynamicDispatchBench.groovy
 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/DynamicDispatchBench.groovy
similarity index 98%
rename from 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/DynamicDispatchBench.groovy
rename to 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/DynamicDispatchBench.groovy
index 323ff8a2a3..37b22d2c80 100644
--- 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/DynamicDispatchBench.groovy
+++ 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/DynamicDispatchBench.groovy
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.groovy.perf
+package org.apache.groovy.perf.grails
 
 import groovy.lang.GroovySystem
 
@@ -45,8 +45,8 @@ import java.util.concurrent.TimeUnit
  * regardless of caching.
  */
 @Warmup(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Measurement(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Fork(1)
+@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
+@Fork(2)
 @BenchmarkMode(Mode.AverageTime)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @State(Scope.Thread)
diff --git 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/GrailsLikePatternsBench.groovy
 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/GrailsLikePatternsBench.groovy
similarity index 99%
rename from 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/GrailsLikePatternsBench.groovy
rename to 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/GrailsLikePatternsBench.groovy
index 7501aa0500..17028e579b 100644
--- 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/GrailsLikePatternsBench.groovy
+++ 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/GrailsLikePatternsBench.groovy
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.groovy.perf
+package org.apache.groovy.perf.grails
 
 import groovy.lang.GroovySystem
 
@@ -46,8 +46,8 @@ import java.util.concurrent.TimeUnit
  * </ul>
  */
 @Warmup(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Measurement(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Fork(1)
+@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
+@Fork(2)
 @BenchmarkMode(Mode.AverageTime)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @State(Scope.Thread)
diff --git 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/MetaclassChangeBench.groovy
 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/MetaclassChangeBench.groovy
similarity index 98%
rename from 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/MetaclassChangeBench.groovy
rename to 
subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/MetaclassChangeBench.groovy
index 69cadcc393..edd840f5ca 100644
--- 
a/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/MetaclassChangeBench.groovy
+++ 
b/subprojects/performance/src/jmh/groovy/org/apache/groovy/perf/grails/MetaclassChangeBench.groovy
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.groovy.perf
+package org.apache.groovy.perf.grails
 
 import groovy.lang.ExpandoMetaClass
 import groovy.lang.GroovySystem
@@ -43,8 +43,8 @@ import java.util.concurrent.TimeUnit
  * modification variants to measure the invalidation overhead.
  */
 @Warmup(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Measurement(iterations = 3, time = 2, timeUnit = TimeUnit.SECONDS)
-@Fork(1)
+@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
+@Fork(2)
 @BenchmarkMode(Mode.AverageTime)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @State(Scope.Thread)

Reply via email to