Hi Stephen, sounds like it can't hurt. Cheers, Paul.
On Tue, Oct 20, 2020 at 8:23 PM Stephen Mallette <spmalle...@gmail.com> wrote: > Would it help if I created a ticket in JIRA and uploaded the JFRs I had? > Perhaps someone could take a look and either see an easy fix or point me in > the right direction toward one? > > On Mon, Oct 19, 2020 at 7:43 PM Daniel Sun <sun...@apache.org> wrote: > >> >> I think the performance issue could be related to groovysh but not the >> new parser. >> Here the result of running my script[1], as you could see, it works well: >> ``` >> D:\_TEMP\yyy>groovy Test.groovy >> result: 5500; elapsed time: 261ms >> >> D:\_TEMP\yyy>groovy Test.groovy >> result: 5500; elapsed time: 240ms >> >> D:\_TEMP\yyy>groovy Test.groovy >> result: 5500; elapsed time: 275ms >> >> D:\_TEMP\yyy>groovy Test.groovy >> result: 5500; elapsed time: 249ms >> >> D:\_TEMP\yyy>groovy Test.groovy >> result: 5500; elapsed time: 259ms >> >> D:\_TEMP\yyy>groovy -v >> Groovy Version: 3.0.6 JVM: 15 Vendor: Azul Systems, Inc. OS: Windows 10 >> ``` >> >> Cheers, >> Daniel Sun >> >> [1] my script: >> ``` >> def begin = System.currentTimeMillis() >> >> // 500 lines of "1 + 10 +" >> def result = new GroovyShell().evaluate ''' >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 + >> 1 + 10 >> ''' >> >> def end = System.currentTimeMillis() >> >> println "result: $result; elapsed time: ${end - begin}ms" >> >> ``` >> >> >> On 2020/10/19 11:06:25, Stephen Mallette <spmalle...@gmail.com> wrote: >> > I was using 3.0.6 actually (I'd downloaded it to make sure that it >> wasn't >> > our extension of groovysh that was causing some difference). But to be >> > sure, I just retested it on 3.0.6 and 2.5.13. I built a 500 line script >> of >> > "addition". For 2.5.13 I got: >> > >> > groovy:000> start = System.currentTimeMillis() >> > ===> 1603105239050 >> > groovy:000> 1 + 10 + >> > groovy:001> 1 + 10 + >> > groovy:002> 1 + 10 + >> > groovy:003> 1 + 10 + >> > groovy:004> 1 + 10 + >> > groovy:005> 1 + 10 + >> > groovy:006> 1 + 10 + >> > ... >> > groovy:495> 1 + 10 + >> > groovy:496> 1 + 10 + >> > groovy:497> 1 + 10 >> > ===> 5478 >> > groovy:000> System.currentTimeMillis() - start >> > ===> 1193 >> > >> > and on 3.0.6 I got: >> > >> > groovy:000> start = System.currentTimeMillis() >> > ===> 1603105244825 >> > groovy:000> 1 + 10 + >> > groovy:001> 1 + 10 + >> > groovy:002> 1 + 10 + >> > groovy:003> 1 + 10 + >> > groovy:004> 1 + 10 + >> > groovy:005> 1 + 10 + >> > groovy:006> 1 + 10 + >> > ... >> > groovy:495> 1 + 10 + >> > groovy:496> 1 + 10 + >> > groovy:497> 1 + 10 >> > ===> 5478 >> > groovy:000> System.currentTimeMillis() - start >> > ===> 31876 >> > >> > >> > >> > >> > >> > >> > >> > On Mon, Oct 19, 2020 at 6:40 AM Daniel Sun <sun...@apache.org> wrote: >> > >> > > >> > > Please try 3.0.6+, we have tuned the performance a lot. >> > > >> > > Cheers, >> > > Daniel Sun >> > > On 2020/10/16 18:58:28, Stephen Mallette <spmalle...@gmail.com> >> wrote: >> > > > Hello, >> > > > >> > > > I happened to be testing some issues related to this pull request I >> > > > submitted the other day: >> > > > >> > > > https://github.com/apache/groovy/pull/1405 >> > > > >> > > > In testing between groovy 2.5.x and 3.x I've noticed a considerable >> > > > performance difference when pasting long multi-lined scripts. 2.5.x >> is >> > > > quite quick to accept the input whereas 3.x seems to slow more and >> more >> > > as >> > > > additional lines are consumed. While I did more complex tests >> trying to >> > > get >> > > > to the bottom of the problem, it's fairly easy to recreate with a >> simple >> > > > addition script: >> > > > >> > > > 1 + 10 + >> > > > 1 + 10 + >> > > > 1 + 10 + >> > > > 1 + 10 + >> > > > 1 + 10 + >> > > > ... repeated a bunch of times and then ended with >> > > > 1 >> > > > >> > > > copy that out of your text editor and just paste it into both >> versions of >> > > > groovsh and see the difference. I've found 500 lines demonstrates >> it well >> > > > but you could probably get away with less and still see the >> difference of >> > > > evaluation at play. >> > > > >> > > > I tried to do some profiling to try to isolate the problem myself, >> but >> > > > things got a little too deep into antlr4 for me and I got lost. Does >> > > anyone >> > > > have any ideas as to what might be different for 3.x? >> > > > >> > > >> > >> >