jamesfredley commented on issue #15293:
URL: https://github.com/apache/grails-core/issues/15293#issuecomment-3704230195
I see similar performance levels when optimizing the Grails 7 test
application with `-Dgroovy.indy.optimize.threshold=0
-Dgroovy.indy.fallback.threshold=0` and `optimizationOptions.indy = false`. In
my testing Java 25 provides ~23% performance improvement over Java 17, but not
enough to resolve the 4x performance hit by itself. `optimizationOptions.indy
= false` was ~6.5x faster than without any optimization on Java 25
To help with further debugging I ran with `-Dgroovy.indy.logging=true
-Dgroovy.indy.debug=true` and without the other optimizations. Additionally I
updated `spring-logback.xml` to log to a file at Log level INFO. This
generates >500MB of logs during application startup and the initial loading of
data.
Here are two 100MB compressed logs and hopefully these can help. `call site
stays uncached` appears throughout both files.
```
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : meta class is
groovy.lang.MetaClassImpl@1bbaf0d3[class grails7.performance.Task]
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : selection base set to class
grails7.performance.Task
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : meta class is a recognized
MetaClassImpl
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : meta method is category type method:
false
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : meta method is static category type
method: false
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : meta method is CachedMethod instance
2026-01-01T17:47:11.376-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : successfully unreflected method
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : casting explicit from (Task)String
to (Object)Object
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : added GroovyRuntimeException
unwrapper
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : added meta class equality check
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : added switch point guard
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : added same-class argument check
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface : call site stays uncached
2026-01-01T17:47:11.377-05:00 INFO 6648 --- [http-nio-8080-exec-1]
o.c.groovy.vmplugin.v8.IndyInterface :
----------------------------------------------------
invocation of method 'status'
invocation type: GET
sender: class
grails7.performance.PerformanceTestService$_getProjectMetrics_closure12$_closure59
targetType: (Object)Object
safe navigation: false
thisCall: false
spreadCall: false
with 1 arguments
argument[0] = grails7.performance.Task@352260d
```
During application startup and initial data loading:
[performance-test-app.log.2026-01-01.0.gz](https://github.com/user-attachments/files/24403283/performance-test-app.log.2026-01-01.0.gz)
While running `localhost:8080/performanceTest/benchmark?pretty=true`:
[performance-test-app.log.2026-01-01.10.gz](https://github.com/user-attachments/files/24403284/performance-test-app.log.2026-01-01.10.gz)
When you run with with `-Dgroovy.indy.logging=true -Dgroovy.indy.debug=true
-Dgroovy.indy.optimize.threshold=0 -Dgroovy.indy.fallback.threshold=0` you see
the following during startup and initial data loading
```
2026-01-01T18:23:52.866-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : added meta class equality check
2026-01-01T18:23:52.866-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : added switch point guard
2026-01-01T18:23:52.866-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : added same-class argument check
2026-01-01T18:23:52.866-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site stays uncached
2026-01-01T18:23:52.866-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site target reset to default,
preparing outside invocation
2026-01-01T18:23:52.867-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site target set, preparing
outside invocation
2026-01-01T18:23:52.867-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site target set, preparing
outside invocation
2026-01-01T18:23:52.867-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site target set, preparing
outside invocation
2026-01-01T18:23:52.867-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface : call site target set, preparing
outside invocation
2026-01-01T18:23:52.867-05:00 INFO 42964 --- [main]
o.c.groovy.vmplugin.v8.IndyInterface :
----------------------------------------------------
invocation of method ''
invocation type: CAST
sender: class org.codehaus.groovy.vmplugin.v8.Selector
targetType: (Object)DirtyCheckable
safe navigation: false
thisCall: false
spreadCall: false
with 1 arguments
argument[0] = grails7.performance.Project@28a44bb8
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]