yermej
12/6/2007 3:32:00 PM
On Dec 6, 6:38 am, Jano Svitok <jan.svi...@gmail.com> wrote:
> On Dec 6, 2007 12:49 PM, Lee Jarvis <ljjar...@gmail.com> wrote:
>
> Sometimes it's better to cache the /#{var}/ as in this case, new
> regexp object is created on each pass through the cycle.
> That might hurt the performance a bit. So:
>
> > var = "hello"
> + var_re = /#{var}/
> > File.foreach "file.txt" do |line|
>
> - if /#{var}/ =~ line
> + if var_re =~ line
>
> > puts "found it"
> > break
> > end
> > end
>
> (This might apply for 1.8 MRI only, other interpreters might be
> different): When the regex literal contains #{}, the object
> is created on each pass through the code. In the other case it's
> created only once.
>
> Jano
You can also use the /o option, which tells Ruby to compile the Regex
only once:
var = "hello"
File.foreach "file.txt" do |line|
if /#{var}/o =~ line
puts "found it"
break
end
end