If part of url1 is in url2, like above, I’d like to declare it a
match. I’m sure this happens using a regular expression, but my
experience is limited with them.
The other problem is that I’m not going to be looking for just one
url1, but I have an entire database table full of those to compare to
an entire database table of url2.
Any thoughts on approaching this problem are appreciated.
match. I’m sure this happens using a regular expression, but my
experience is limited with them.
The other problem is that I’m not going to be looking for just one
url1, but I have an entire database table full of those to compare to
an entire database table of url2.
Any thoughts on approaching this problem are appreciated.
It’s not a complete answer, but in case it helps: String has an
include? method:
Benchmark Windows ruby 1.8.4 (2005-12-24) [i386-mswin32]
C:\source\projects\ruby\strings>ruby temp.rb
user system total real
0.080000 0.000000 0.080000 ( 0.080000)
1.722000 0.130000 1.852000 ( 1.873000)
Benchmark Linux ruby 1.8.4 (2005-12-24) [i686-linux]
zdennis@lima:~$ ruby-1.8.4 temp.rb
user system total real
0.100000 0.000000 0.100000 ( 0.119403)
1.570000 0.040000 1.610000 ( 1.760446)
Benchmark Linux ruby 1.8.3 (2005-06-23) [i486-linux]
zdennis@lima:~$ ruby temp.rb
user system total real
0.160000 0.030000 0.190000 ( 0.209436)
1.720000 0.080000 1.800000 ( 2.021754)
Benchmark Linux ruby 1.8.2 (2005-04-11) [i386-linux]
zdennis@jboss:~$ ruby temp.rb
user system total real
0.000000 0.000000 0.000000 ( 0.246239)
0.000000 0.000000 0.000000 ( 1.401049)
So, regular expression matching itself is not that much slower than
String#include?.
What makes “url2 =~ /#{url}/” slow is the creation of so many Regexp
objects.
So, regular expression matching itself is not that much slower than
String#include?.
What makes “url2 =~ /#{url}/” slow is the creation of so many Regexp
objects.
Ruby has some very subtle optimizations for Regexps too:
ruby 1.8.4 (2006-03-20) [powerpc-darwin8.5.0]
GC.disable
n = ObjectSpace.each_object(Regexp){}
def foo; /abc/ end
Note I didn’t call foo.
ObjectSpace.each_object(Regexp){} - n #=> 1
1000.times {foo}
ObjectSpace.each_object(Regexp){} - n #=> 1
It is always nice to see simple optimizations like this.
Brian.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.