Переделал тест и опять в шоке<br>Либо что-то не так в тестах, либо регулярки рвут substr как грелку<br><br>use strict;<br>use warnings;<br>use Benchmark qw(:all :hireswallclock);<br><br>my $phone = '70123456789';<br>
my $cnt = 1000;<br>my $vs = {<br> regex => 'if ( $phone =~ /^7/ ) { }<br> $phone .= "";' x $cnt,<br> substr_eq => 'if ( substr($phone, 0, 1) eq "7" ) { }<br> $phone .= "";' x $cnt,<br>
substr => 'if ( substr($phone, 0, 1) == 7 ) { }<br> $phone .= "";' x $cnt,<br>};<br><br>print "Benchmark: $Benchmark::VERSION\n";<br>print "PERL: $]\n";<br>cmpthese -20, $vs;<br>
<br>__END__<br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr substr_eq regex<br>substr 2451/s -- -17% -51%<br>substr_eq 2947/s 20% -- -41%<br>regex 5027/s 105% 71% --<br>
<br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr substr_eq regex<br>substr 2462/s -- -16% -52%<br>substr_eq 2922/s 19% -- -43%<br>regex 5093/s 107% 74% --<br>
<br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr substr_eq regex<br>substr 2433/s -- -15% -52%<br>substr_eq 2878/s 18% -- -43%<br>regex 5066/s 108% 76% --<br>
<br>