Мне всегда казалось, что регулярки - удобный, но не быстрый инструмент.<br>И когда я написал в коде <br>if ( $phone =~ /^7/ ) <br>Мне в голову пришла мысль, а не будет ли гораздо ли быстрее <br>if ( substr( $phone, 0, 1 ) == 7 )<br>
глянув на эту строчку я немного поморщился из-за потери читабельности, что и побудило меня провести тест "Сколько мне стоит читабельность кода"<br>Результаты теста меня просто шокировали.<br>Собственно своим хорошим настроением я и делюсь.<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 => sub {<br>
if ( substr( $phone, 0, 1 ) == 7 ) { }<br> },<br><br>};<br>cmpthese - 5, $vs;<br><br>__END__<br><br> Rate substr regex<br>substr 3867126/s -- -21%<br>regex 4887480/s 26% --<br><br>