> >> The suggestion of:
> >>
> >>  if($something =~ /^(string0|string1|string2)$/)
> >>
> >> is not equivalent to your original condition. It's also likely to be
> >> inefficient.
> >
> > I get 1 min 15.983sec for "normal" three condition if, and 52.305sse for 
> > a regex approach.  My
> > test code is:
> >
> > my $type = shift;
> > my $iterate = 1000000;
> >
> > my $item = "lock";
> >
> > if ($type eq "normal") {
> >     for (0..$iterate) {
> >         print " " if $item =~ /^(?:apple|banana|lock)$/;
> >     }
> > }
> 
> are you messing with our minds on purpose?  Looks like this
> is the regex case
> 
> > elsif ($type eq "regex") {
> >     for (0..$iterate) {
> >         print " " if $item eq "apple" or $item eq "banana" or $item eq 
> > "lock";
> >     }
> > }
> 
> and this is 'normal'
> 
> so, was your benchmark right, or switched?

Oops, switched... which means I should reverse the conclusion:

The basic, obvious, more explicit form of the multiple condition is faster - 30% 
faster in this
example.  Use what works, but a regex isn't going to speed anything up.  However, if 
most of the
time you have to check against a regex away, you've already spent most of the 
difference in
speed... so you may as well combine them.

I shouldn't try writing code when I am mostly asleep - let alone post it to a 
mailinglist for
others to see! ;-)

Jonathan Paton

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to