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

Reply via email to