I've seen similar problems with Groovy 3.x/4.x when upgrading Apache
TinkerPop (we've had to revert from it to 2.5.x and without an improvement
I don't see how upgrade will be possible in the future). I had a specific
context we were dealing with in groovysh but I sense it is not limited
there. I described that issue in what I think was reasonable detail:

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

Perhaps that ticket, if deemed related, could be the basis for a wider
discussion on this issue?

I was unaware of the performance guide, though I believe I came across some
of those settings under my own discovery. I will have to check. I can
update that ticket with any fresh findings.



On Thu, Oct 14, 2021 at 7:32 AM Paul King <pa...@asert.com.au> wrote:

> Hi mg,
>
> Antlr4 performance is something we want to work much more on but it isn't
> an easy task and we have already picked off some of the low-hanging fruit.
>
> It is probably worth creating a Jira ticket for this. We tend to progress
> much more efficiently on well-defined issues than broad ones, but perhaps
> we need a broad one and can carve off some specific points.
>
> In the meantime, does the performance guide doco help at all:
>
> https://github.com/apache/groovy/blob/master/src/spec/doc/performance-guide.adoc
> In particular, does trying to use the SLL mode help for your scenario. It
> generally only works for simple DSL code but offers a great parsing
> performance boost when it does.
> The caching parameters and parallel options are also potential things to
> try but gains vary widely depending on your scenario.
>
> Cheers, Paul.
>
>
> On Thu, Oct 14, 2021 at 9:24 AM MG <mg...@arscreat.com> wrote:
>
>> Hi,
>>
>> we have spiked using Groovy 4.0.0-beta-1 with our Groovy framework, to
>> see if the GString improvements would lead to a speedup in our SQL
>> generation code (typically this is irrelevant, and performance is solely
>> decided by SQL optimizations, but we have recently come across a few cases
>> in practice where performance was not bound SQL execution but by the SQL
>> generating code itself).
>>
>> We had to find workarounds for a few problems (tickets coming), but
>> overall it was much faster/hassle free to get Groovy 4 up and running
>> compared to our recent switch to from Froovy 2.5 to 3, which was nice :-)
>>
>> Alas performance-wise what we surprisingly found was, that the
>> performance of our main web application dropped by a factor of 2 (table
>> refresh) to 3 (startup).
>> Executing our test suite showed a similar picture. Since no immediate
>> source for this performance drop emerged, we checked the performance of
>> Groovy 3 Indy, more to rule out that the performance reduction had
>> something to do with invokedynamic;
>> as can be seen in the table below, to our surprise performance
>> degradiation of Groovy 3.0.9 with full invokedynamic (Groovy JARs &
>> IntelliJ compiler switch/checkbox active) was in fact in most cases close
>> to the one seen with Groovy 4.0.0-beta-1, pointing to invokedynamic  as the
>> potential cause.
>>
>> Right now it looks to us, as if Groovy with invokedynamic for us is just
>> "leaking performance everywhere", with no clear source.
>> Speed changes range from about 0.6 (i.e. a speedup) to about 5.0, with a
>> large bias towards a slowdown by a factor of 2.0 to 2.5. The overall time
>> of the test suite increased by a factor of 2.37 (G3 Indy) and 2.45 (G4)
>> respectively.
>>
>> Any ideas what could be the cause of this unexpected slowdown or where we
>> should put our focus in analyzing this, to create a test case independent
>> of our framwork ?
>>
>> Cheers,
>> mg
>>
>>
>> *Groovy 3.0.9 [s]* *Groovy 3.0.9 INDY [s]* *Groovy 4.0.0-beta-1 [s]* 
>> *G3INDY/G3
>> Ratio* *G4/G3 Ratio*
>> 3038 7200 7440 2.37 2.45
>> 160.146 482.584 467.058 3.01 2.92
>> 115.595 388.332 387.82 3.36 3.35
>> 88.955 141.595 142.205 1.59 1.60
>> 94.743 139.676 138.553 1.47 1.46
>> 65.338 109.143 130.918 1.67 2.00
>> 117.108 129.789 116.748 1.11 1.00
>> 74.182 115.142 110.801 1.55 1.49
>> 30.653 104.733 101.138 3.42 3.30
>> 24.71 80.171 72.541 3.24 2.94
>> 22.586 59.167 60.043 2.62 2.66
>> 41.302 46.675 46.682 1.13 1.13
>> 5.34 51.456 46.045 9.64 8.62
>> 14.066 41.788 43.987 2.97 3.13
>> 20.535 42.441 42.571 2.07 2.07
>> 19.582 43.338 42.493 2.21 2.17
>> 19.937 43.235 42.361 2.17 2.12
>> 23.118 40.245 42.206 1.74 1.83
>> 14.777 34.526 33.725 2.34 2.28
>> 15.23 31.757 33.302 2.09 2.19
>> 15.813 34.246 30.699 2.17 1.94
>> 18.743 33.892 30.436 1.81 1.62
>> 14.855 30.105 27.19 2.03 1.83
>> 10.775 28.514 25.813 2.65 2.40
>> 10.571 26.344 23.289 2.49 2.20
>> 8.084 21.218 21.675 2.62 2.68
>> 9.155 21.571 21.299 2.36 2.33
>> 5.454 18.296 19.425 3.35 3.56
>> 12.987 18.841 18.537 1.45 1.43
>> 10.928 17.93 17.987 1.64 1.65
>> 10.501 9.792 14.374 0.93 1.37
>> 9.455 14.174 14.038 1.50 1.48
>> 3.19 12.39 13.79 3.88 4.32
>> 10.006 13.961 13.264 1.40 1.33
>> 22.858 14.48 13.073 0.63 0.57
>> 4.592 10.176 12.777 2.22 2.78
>> 8.991 12.932 11.908 1.44 1.32
>> 17.245 10.591 10.746 0.61 0.62
>> 2.331 11.443 10.497 4.91 4.50
>> 11.159 10.205 9.911 0.91 0.89
>> 2.362 20.721 9.744 8.77 4.13
>> 9.369 7.543 9.097 0.81 0.97
>> 1.845 9.353 8.483 5.07 4.60
>> 4.647 5.537 8.065 1.19 1.74
>> 8.758 8.806 7.664 1.01 0.88
>> 10.359 9.95 7.657 0.96 0.74
>> 8.954 8.764 7.38 0.98 0.82
>> 2.424 7.37 6.941 3.04 2.86
>> 6.75 6.771 6.84 1.00 1.01
>> 7.476 5.179 6.679 0.69 0.89
>> 1.873 6.785 6.64 3.62 3.55
>> 8.13 5.896 6.564 0.73 0.81
>> 6.892 5.189 6.385 0.75 0.93
>> 5.91 6.153 6.2 1.04 1.05
>> 1.318 4.944 5.585 3.75 4.24
>>
>

Reply via email to