You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@grails.apache.org by "jamesfredley (via GitHub)" <gi...@apache.org> on 2026/01/01 23:30:46 UTC
Re: [I] Groovy - invoke dynamic performance problems [grails-core]
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: notifications-unsubscribe@grails.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org