GROOVY-12185: Move classic call-site caching into optional groovy-callsite module#2730
GROOVY-12185: Move classic call-site caching into optional groovy-callsite module#2730daniellansun wants to merge 1 commit into
Conversation
9c7a08f to
c42badc
Compare
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.
| Benchmark suite | Current: 4eccbf1 | Previous: 3240fcf | Ratio |
|---|---|---|---|
org.apache.groovy.bench.NonCapturingLambdaBench.capturingLambdaApply |
58199.82657236301 ops/ms |
38578.09588384062 ops/ms |
1.51 |
org.apache.groovy.bench.AryBench.java ( {"n":"1000"} ) |
0.11818123416486022 ms/op |
0.05959038168742412 ms/op |
1.98 |
This comment was automatically generated by workflow using github-action-benchmark.
JMH summary — classic (commit
|
| Group | Speedup | Calibrated | n |
|---|---|---|---|
| bench | 0.982 × | 0.992 × | 84 |
| core | 1.223 × | 1.090 × | 77 |
| grails | 0.941 × | 0.833 × | 80 |
⚠️ Runner speed differs ≥15% from the historical baseline hardware for: core-hz. Raw speedups are not meaningful for those parts — use the calibrated column.
Runner calibration (this run vs baseline hardware): bench 0.99× (26 rulers) · core-ag 1.00× (3 rulers) · core-hz 1.28× (3 rulers) · grails-ad 1.11× (3 rulers) · grails-ez 1.15× (3 rulers)
Baseline: dev/bench/jmh/<part>/classic/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data
JMH summary — indy (commit
|
| Group | Speedup | Calibrated | n |
|---|---|---|---|
| bench | no overlap with baseline | — | 0 |
| core | 4.034 × | 3.360 × | 77 |
| grails | 2.585 × | 2.160 × | 80 |
⚠️ Runner speed differs ≥15% from the historical baseline hardware for: core-ag, grails-ad. Raw speedups are not meaningful for those parts — use the calibrated column.
Runner calibration (this run vs baseline hardware): core-ag 1.45× (3 rulers) · core-hz 0.97× (3 rulers) · grails-ad 1.44× (3 rulers) · grails-ez 1.03× (3 rulers)
Baseline: dev/bench/jmh/<part>/indy/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data
blackdrag
left a comment
There was a problem hiding this comment.
I am a bit worried about the metaclass changes since it kind of means changing public API. And I was wondering if can somehow provide an alternative. Maybe we don´t need that as most people probably do not use those callsite methods. But if we do need to compatibility I was wondering if we could solve it with a parallel meta class system. What I mean is that if callsites are active we use the callsite variants and otherwise we use the normal meta class. Maybe the callsite meta classes could just wrap the normal metaclass and delegate calls... the classic way of trying to solve a problem by adding a level of indirection. But the basic question is really: Do we need to keep those methods on the meta classes? @paulk-asert what do you think? If we say we do not need it, then I would agree to the change.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #2730 +/- ##
==================================================
+ Coverage 69.2732% 69.7625% +0.4893%
- Complexity 34769 34815 +46
==================================================
Files 1542 1543 +1
Lines 130456 129670 -786
Branches 23786 23655 -131
==================================================
+ Hits 90371 90461 +90
+ Misses 31962 31076 -886
- Partials 8123 8133 +10
🚀 New features to boost your workflow:
|
|
I am keen for this work to be eventually done. I need to think more about whether we are ready for this in Groovy 6 or whether this might be better in Groovy 7. I will need a few more days to absorb it. |
c42badc to
4eccbf1
Compare
|
✅ All tests passed ✅🏷️ Commit: 4eccbf1 Learn more about TestLens at testlens.app. |


https://issues.apache.org/jira/browse/GROOVY-12185