Мне всегда казалось, что регулярки - удобный, но не быстрый инструмент.<br>И когда я написал в коде <br>if ( $phone =~ /^7/ ) <br>Мне в голову пришла мысль, а не будет ли гораздо ли быстрее <br>if ( substr( $phone, 0, 1 ) == 7 )<br>
глянув на эту строчку я немного поморщился из-за потери читабельности, что и побудило меня провести&nbsp; тест &quot;Сколько мне стоит читабельность кода&quot;<br>Результаты теста меня просто шокировали.<br>Собственно своим хорошим настроением я и делюсь.<br>
<br><br>use strict;<br>use warnings;<br>use Benchmark qw(:all);<br><br>my $phone = &#39;70123456789&#39;;<br>my $vs = {<br>&nbsp;&nbsp;&nbsp; regex =&gt; sub {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( $phone =~ /^7/ ) { }<br>&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp; substr =&gt; sub {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( substr( $phone, 0, 1 ) == 7 ) { }<br>&nbsp;&nbsp;&nbsp; },<br><br>};<br>cmpthese - 5, $vs;<br><br>__END__<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rate substr&nbsp; regex<br>substr 3867126/s&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp; -21%<br>regex&nbsp; 4887480/s&nbsp;&nbsp;&nbsp; 26%&nbsp;&nbsp;&nbsp;&nbsp; --<br><br>