Что-то у меня сильно результаты скачут.<br>Видимо тут слишком большие погрешности.<br>Несколько раз запускал вот этот код<br>use strict;<br>use warnings;<br>use Benchmark qw(:all);<br><br>my $phone = '70123456789';<br>
my $vs = {<br> regex => sub {<br> if ( $phone =~ /^7/ ) { }<br> },<br> substr_eq => sub {<br> if ( substr($phone, 0, 1) eq '7' ) { }<br> },<br> substr => sub {<br> if ( substr($phone, 0, 1) == 7 ) { }<br>
},<br>};<br><br>print "Benchmark: $Benchmark::VERSION\n";<br>print "PERL: $]\n";<br>cmpthese -5, $vs;<br><br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate regex substr substr_eq<br>
regex 4361549/s -- -14% -26%<br>substr 5057507/s 16% -- -14%<br>substr_eq 5910398/s 36% 17% --<br><br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr substr_eq regex<br>
substr 4490439/s -- -8% -11%<br>substr_eq 4855446/s 8% -- -4%<br>regex 5040176/s 12% 4% --<br><br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr substr_eq regex<br>
substr 3303013/s -- -28% -28%<br>substr_eq 4596273/s 39% -- -0%<br>regex 4611086/s 40% 0% --<br><br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate regex substr substr_eq<br>
regex 3711242/s -- -5% -21%<br>substr 3906712/s 5% -- -17%<br>substr_eq 4701856/s 27% 20% --<br><br>Benchmark: 1.07<br>PERL: 5.008008<br> Rate substr regex substr_eq<br>
substr 3789591/s -- -3% -10%<br>regex 3915761/s 3% -- -7%<br>substr_eq 4195575/s 11% 7% --<br><br>