On 07.08.25 21:24, MG wrote:
Hi .+,
since Groovy 5 to my knowledge is the first Groovy which does away with
the old, faster, non-invoke-dynamic call site resolution support, I
wanted to do a quick post on that topic that might be of interest to
larger Groovy projects like ours:
1. After the initial performance problems in Groovy 3/4 caused
by invoke-dynamic, for which we were, with some effort, in the end
able to pinpoint the culprit in our code and implement a workaround,
we unfortunately discovered another performance drop in a later
Groovy version.
1. The drop was less severe than in the previous case, but was
around a factor of 2 when it appeared.
2. In this case we were alas not able to find a specific code part that
caused the drop in performance, but it seemed like Groovy was
leaking a bit of performance on every level, which in the end added
up to our main web application running with half speed in certain
crucial parts, as well as our test suite taking far longer to
execute fully.
[...]
I have a long list of changes to be done to the invokedynamic code. The
simple problem is that invokedynamic is complex and difficult to handle.
And because of context switching I never found a window big enough to
actually do the changes I have in mind. Then I wanted to write a
document explaining all the problems so that maybe others can do it...
but that turned out to be still too much so far.
bye Jochen