The first version invokes method Regexp#=3D~ and the second version invok= es
String#=3D~ - which happen to do roughly the same although I believe the
second one to be a tad slower. =A0I personally prefer the first form beca= use
of the speed difference and regular expression matching is rather an
operation of Regexp than of String.
Very technically speaking, calling the Regexp#=3D~ will be
microscopically faster because it avoids a tiny bit of C code that
gets executed when calling the String#=3D~ version. In practice though,
the difference is so small as to be invisible against the noise of the
rest of the system.
String#=3D~ just has a little sugar built in.
If it's passed a Regexp, then it just calls the C function underlying Regex=
p#=3D~.
If it is passed a String, it complains.
If it is passed anything else, it tries to call #=3D~ on what it was
passed, passing itself as the argument. This lets one build custom
matching classes that Strings can use with the =3D~ syntax.
Kirk Haines