"Derek Lewis" <lewisd / f00f.net> schrieb im Newsbeitrag
news:20050216012200.GP23232 / f00f.net...
> On a whim, I just decided to try an experiment with regexps, to see how
> they perform in two slightly different cases.  I wanted to see how using
> a single regexp object for many many evaluations performed compared to
> using the regexp within the loop.
>
> The scripts I wrote searched through a words file that is 234937 lines
> long.
>
> Here's the scripts I wrote, to clarify:
> First one:
>
> total = 0
> File.open( 'words', 'r' ) { |file|
>    file.each_line { |line|
> word = line.chomp
> total +=1 if word =~ /[a-df-h][aeiou]{2}/
> }
> }
> puts total
>
> Second one:
>
> rexp = /[a-df-h][aeiou]{2}/
> total = 0
> File.open( 'words', 'r' ) { |file|
>    file.each_line { |line|
> word = line.chomp
> total +=1 if word =~ rexp
> }
> }
> puts total
>
>
> I expected the second one to be slightly faster, but was surprised to
> see that it was actually slightly slower.  I ran each one about 10-15
> times, and eyeballed an average.  The results from each run after the
> first were pretty consistant.
>
> It's just a curiosity, but does anyone know what might cause them to be
> 'backwards' like that? :)

Did you try the same with the matching reversed, i.e., "rexp =~ word"
instead of "word =~ rexp"?  Did it make a difference?

Kind regards

    robert