I should've included a link to the PR:
https://github.com/apache/groovy/pull/1761

On Wed, Aug 10, 2022 at 10:30 PM Paul King <pa...@asert.com.au> wrote:
>
> Hi folks,
>
> The performance subproject in our build was designed to check on
> (among other things) compiler performance. The 'performanceTests' task
> compiles a set of source files across numerous Groovy versions. Over
> time, the number of source files it checks against has been diluted.
> The exact history isn't too important, but the summary is something
> like this:
>
> * We have tried to keep the tests to just relying on the core subproject.
> * We have tried to not rely on too many external dependencies.
> * We have tried not to include any classes which have been impacted by
> package changes, e.g. using XmlParser would require
> groovy.util.XmlParser in early versions and groovy.xml.XmlParser in
> later versions.
> * We haven't included functionality included in later versions.
> * Our approach when dropping further impacted files has been to just
> remove them from the list of files compiled.
>
> The end result is that the current performance test reveals very
> little information. I think we need to add in numerous additional
> files. I have also recently pruned down the versions we try to check
> against. I don't think there is a lot of value in knowing performance
> compared to Groovy 1.8.x.
>
> I have just created a PR which adds a bunch of additional files - I
> used a whole bunch of examples I created some years ago for PLEAC. I
> believe the licensing is all legit. There are around 10000 lines of
> Groovy source in those files. The alternative would be to pick our way
> through the current source base and add selected files which meet all
> of the criteria we have above.
>
> Incidentally, results on Windows were:
> > Task :performance:performanceTests
> Groovy 2.4.21 Average 437.965ms ± 16.07ms
> Groovy 4.0.5-SNAPSHOT Average 649.8199999999999ms ± 89.79ms (48.37% slower)
> Groovy 4.0.4 Average 654.635ms ± 85.86ms (49.47% slower)
> Groovy 2.5.18 Average 676.224ms ± 8.38ms (54.4% slower)
> Groovy 3.0.12 Average 792.625ms ± 192.19ms (80.98% slower)
>
> On Linux, the results were:
> > Task :performance:performanceTests
> Groovy 2.4.21 Average 473.17699999999996ms ± 24.47ms
> Groovy 4.0.4 Average 648.592ms ± 129.15ms (37.07% slower)
> Groovy current Average 649.4449999999999ms ± 126.79ms (37.25% slower)
> Groovy 2.5.18 Average 683.147ms ± 12.6ms (44.37% slower)
> Groovy 3.0.12 Average 796.938ms ± 225.73ms (68.42% slower)
>
> Here, "current" is the version of the branch you are running on
> (GROOVY_4_0_X for me). I also published the current branch (on
> Windows) to the local Maven repo in case that made any difference.
>
> The usual disclaimer about microbenchmarks applies. Also, remember,
> this is testing oldish code - so not code rich in AST transforms or
> using CompileStatic.
>
> Thoughts about whether the Pleac examples are good to add or should we
> move all of this to another repo?
>
> Cheers, Paul.

Reply via email to