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

Reply via email to