"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