I committed changes to make RubyString use a StringBuffer instead of a String. This should make a large difference in the code in question. I also fixed a bunch of String functions while I was at it.
-Tom On Sat, 08 Apr 2006, Thomas E Enebo defenestrated me: > Actually, I think I have the major performance problem figured out.... > String concatenation. The result << line is the major time sucker > in this. On my laptop when I change RubyString to use a > StringBuffer instead of String a 10,000 line file takes > 0.6 seconds to run while it takes 242 seconds as a String. > The full gemspec runs in about 6 seconds versus 0.21 in ruby so > we are still a ways off, but it seems closer to general > interpreter performance (e.g. eval'ing nodes). Regexp creation > probably is the only other measurable difference. > > I am looking into doing this conversion now (I did a fairly naive > modification that sucks for all the non-stringbuffer-friendly functions). > > -Tom > > On Sat, 08 Apr 2006, Ola Bini defenestrated me: > > > Ok, next point of interest, regexp substitions with String.sub > > With my former optimizations for Regexps I got this: > > D:\Project\jruby>ruby testRegSubPerformance.rb > > Time1 0.581 > > Time2 0.58 > > > > D:\Project\jruby>bin\jruby testRegSubPerformance.rb > > Time1 8.623 > > Time2 5.428 > > > > where the test is more or less similar to other one. > > With the attached patch applied I get this: > > D:\Project\jruby>bin\jruby testRegSubPerformance.rb > > Time1 6.48 > > Time2 5.1770000000000005 > > > > which is quite good. And the only difference was to replace a RubyString > > with a StringBuffer in two lines which used append. I guess these small > > kinds of optimizations could get us some good performance at last. > > > > Regards > > Ola Bini > > > > > > ----- Original Message ----- > > From: Ola Bini <[EMAIL PROTECTED]> > > Date: Saturday, April 8, 2006 11:27 am > > Subject: Re: [Jruby-devel] Regexp performance. > > To: jruby-devel@lists.sourceforge.net > > > > > Ok, the second approach gave a little bit more: > > > > > > D:\Project\jruby>bin\jruby testRegexpPerformance.rb > > > Time1 5.168 for sum 150000 > > > Time2 3.9450000000000003 for sum 150000 > > > > > > But it's still not great. Anyway, I've attached the patch if this is > > > something we should continue work on. > > > > > > Regards > > > Ola Bini > > > > > > ----- Original Message ----- > > > From: Ola Bini <[EMAIL PROTECTED]> > > > Date: Saturday, April 8, 2006 11:23 am > > > Subject: Re: [Jruby-devel] Regexp performance. > > > To: jruby-devel@lists.sourceforge.net > > > > > > > Once again, a very small test where I replaced the > > > Pattern.compile in > > > > RegexpTranslator into a getPattern which saves all earlier > > > patterns > > > > in a > > > > hashmap. This actually worsens the performance slightly, so that's > > > > probably not the right way to go. I will try to apply this > > > approach to > > > > the whole RegexpTranslator.translate method instead and see what > > > > happens. > > > > Regards > > > > Ola Bini > > > > > > > > ----- Original Message ----- > > > > From: Ola Bini <[EMAIL PROTECTED]> > > > > Date: Saturday, April 8, 2006 10:53 am > > > > Subject: [Jruby-devel] Regexp performance. > > > > To: jruby-devel@lists.sourceforge.net > > > > > > > > > Hi there, > > > > > > > > > > I made a highly unscientific test of performance of regexps in > > > Ruby> > compared to JRuby. > > > > > The attached script is what I used to test this. The output is as > > > > > follows for 100 000 repetitions of the same regexp applying: > > > > > D:\Project\jruby>ruby testRegexpPerformance.rb > > > > > Time1 0.201 for sum 150000 > > > > > Time2 0.22 for sum 150000 > > > > > > > > > > D:\Project\jruby>bin\jruby testRegexpPerformance.rb > > > > > Time1 5.698 for sum 150000 > > > > > Time2 3.986 for sum 150000 > > > > > > > > > > This seems fairly good, actually, we're only an order of magnitude > > > > > slower, which is not so bad if you think about all the stuff > > > that's> > going on. The difference between Time1 and Time2 is what > > > happens > > > > if I > > > > > save the regexp in a variable before the loop, or not. As you > > > can > > > > see,> we could save pretty much performance here. > > > > > > > > > > Regards > > > > > Ola Bini > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > This SF.Net email is sponsored by xPML, a groundbreaking > > > scripting > > > > languagethat extends applications into web and mobile media. > > > Attend > > > > the live webcast > > > > and join the prime developer group breaking into this new coding > > > > territory!http://sel.as- > > > > > > > > > us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642_______________________________________________ > > > > Jruby-devel mailing list > > > > Jruby-devel@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/jruby-devel > > > > > > > > > > > -- > + http://www.tc.umn.edu/~enebo +---- mailto:[EMAIL PROTECTED] ----+ > | Thomas E Enebo, Protagonist | "Luck favors the prepared | > | | mind." -Louis Pasteur | > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting language > that extends applications into web and mobile media. Attend the live webcast > and join the prime developer group breaking into this new coding territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Jruby-devel mailing list > Jruby-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jruby-devel -- + http://www.tc.umn.edu/~enebo +---- mailto:[EMAIL PROTECTED] ----+ | Thomas E Enebo, Protagonist | "Luck favors the prepared | | | mind." -Louis Pasteur | ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ Jruby-devel mailing list Jruby-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jruby-devel