[Moscow.pm] Не думал что регулярные выражения настолько быстры (или substr такой медленный...)

Denis Evdokimov evdokimov.denis на gmail.com
Ср Дек 24 10:54:08 PST 2008


Что-то у меня сильно результаты скачут.
Видимо тут слишком большие погрешности.
Несколько раз запускал вот этот код
use strict;
use warnings;
use Benchmark qw(:all);

my $phone = '70123456789';
my $vs = {
   regex => sub {
       if ( $phone =~ /^7/ ) { }
   },
   substr_eq => sub {
       if ( substr($phone, 0, 1) eq '7' ) { }
   },
   substr => sub {
       if ( substr($phone, 0, 1) == 7 ) { }
   },
};

print "Benchmark: $Benchmark::VERSION\n";
print "PERL: $]\n";
cmpthese -5, $vs;


Benchmark: 1.07
PERL: 5.008008
               Rate     regex    substr substr_eq
regex     4361549/s        --      -14%      -26%
substr    5057507/s       16%        --      -14%
substr_eq 5910398/s       36%       17%        --


Benchmark: 1.07
PERL: 5.008008
               Rate    substr substr_eq     regex
substr    4490439/s        --       -8%      -11%
substr_eq 4855446/s        8%        --       -4%
regex     5040176/s       12%        4%        --


Benchmark: 1.07
PERL: 5.008008
               Rate    substr substr_eq     regex
substr    3303013/s        --      -28%      -28%
substr_eq 4596273/s       39%        --       -0%
regex     4611086/s       40%        0%        --


Benchmark: 1.07
PERL: 5.008008
               Rate     regex    substr substr_eq
regex     3711242/s        --       -5%      -21%
substr    3906712/s        5%        --      -17%
substr_eq 4701856/s       27%       20%        --

Benchmark: 1.07
PERL: 5.008008
               Rate    substr     regex substr_eq
substr    3789591/s        --       -3%      -10%
regex     3915761/s        3%        --       -7%
substr_eq 4195575/s       11%        7%        --
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081224/d7c8b15b/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm