As the proposal received no objection for a long time, so I merged the PR.
Cheers, Daniel Sun On 2022/08/10 12:42:20 Paul King wrote: > 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. >