>>
>> Why slow it down with the 'i'?
>> $searchstring=~/[a-zA-Z0-9]/;
> Why slow it down with a regular expression? :-)
> if ( $searchstring =~ tr/a-zA-Z0-9/ ) {
i was bored, and thought i'd try a little benchmark. note, this
is for the specific problem expressed here, not the general case.
i benchmarked the following:
RegexWithI: $string =~ /[A-Z0-9]/i;
RegexNoI: $string =~ /A-Za-z0-9/;
tr: $string =~ tr/[A-Za-z0-9//;
i tested each with $string eq "A" and $string eq "z"
i ran it three times on my perl 5.6.1, linux 2.4.7, celeron 400
laptop. the results (formatting slightly adjusted)
Benchmark: timing 1000000 iterations
RegexNoI(A): 18 wallclock secs (14.05 usr + 0.38 sys = 14.43 CPU) @ 69300.07/s
(n=1000000)
RegexNoI(z): 17 wallclock secs (14.05 usr + 0.40 sys = 14.45 CPU) @ 69204.15/s
(n=1000000)
RegexWithI(A): 16 wallclock secs (13.86 usr + 0.40 sys = 14.26 CPU) @ 70126.23/s
(n=1000000)
RegexWithI(z): 18 wallclock secs (13.54 usr + 0.25 sys = 13.79 CPU) @ 72516.32/s
(n=1000000)
tr(A): 12 wallclock secs (11.30 usr + 0.16 sys = 11.46 CPU) @ 87260.03/s
(n=1000000)
tr(z): 16 wallclock secs (11.32 usr + 0.50 sys = 11.82 CPU) @ 84602.37/s
(n=1000000)
Benchmark: timing 1000000 iterations
RegexNoI(A): 16 wallclock secs (13.84 usr + 0.29 sys = 14.13 CPU) @ 70771.41/s
(n=1000000)
RegexNoI(z): 17 wallclock secs (14.05 usr + 0.33 sys = 14.38 CPU) @ 69541.03/s
(n=1000000)
RegexWithI(A): 16 wallclock secs (13.57 usr + 0.27 sys = 13.84 CPU) @ 72254.34/s
(n=1000000)
RegexWithI(z): 20 wallclock secs (14.06 usr + 0.53 sys = 14.59 CPU) @ 68540.10/s
(n=1000000)
tr(A): 15 wallclock secs (11.19 usr + 0.25 sys = 11.44 CPU) @ 87412.59/s
(n=1000000)
tr(z): 13 wallclock secs (11.17 usr + 0.14 sys = 11.31 CPU) @ 88417.33/s
(n=1000000)
Benchmark: timing 1000000 iterations
RegexNoI(A): 17 wallclock secs (13.76 usr + 0.16 sys = 13.92 CPU) @ 71839.08/s
(n=1000000)
RegexNoI(z): 18 wallclock secs (13.95 usr + 0.41 sys = 14.36 CPU) @ 69637.88/s
(n=1000000)
RegexWithI(A): 15 wallclock secs (13.69 usr + 0.27 sys = 13.96 CPU) @ 71633.24/s
(n=1000000)
RegexWithI(z): 14 wallclock secs (13.49 usr + 0.06 sys = 13.55 CPU) @ 73800.74/s
(n=1000000)
tr(A): 13 wallclock secs (11.17 usr + 0.16 sys = 11.33 CPU) @ 88261.25/s
(n=1000000)
tr(z): 13 wallclock secs (10.78 usr + 0.25 sys = 11.03 CPU) @ 90661.83/s
(n=1000000)
make if that what you will...
i've pasted the code i used below, it isn't very interesting.
--
Best regards, Daniel
"The only thing worse than being talked about - is not being talked about!" -
Oscar Wilde.
#!/usr/bin/perl -w
use Benchmark;
$string1 = "A";
$string2 = "z";
timethese( 1000000, { 'RegexWithI(A)' => '&with_i($string1)' ,
'RegexWithI(z)' => '&with_i($string2)',
'RegexNoI(A)' => '&without_i($string1)',
'RegexNoI(z)' => '&without_i($string2)',
'tr(A)' => '&tr_without($string1)',
'tr(z)' => '&tr_without($string2)'
});
sub with_i {
my ($string) = @_;
$string =~ /[A-Z0-9]/i;
}
sub without_i {
my ($string) = @_;
$string =~ /[A-Za-z0-9]/;
}
sub tr_without {
my ($string) = @_;
$string =~ tr/[A-Za-z0-9]//;
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]