[Moscow.pm] Не думал что регулярные выражения настолько быстры (или substr такой медленный...)
Denis Evdokimov
evdokimov.denis на gmail.com
Чт Дек 25 03:15:37 PST 2008
Переделал тест и опять в шоке
Либо что-то не так в тестах, либо регулярки рвут substr как грелку
use strict;
use warnings;
use Benchmark qw(:all :hireswallclock);
my $phone = '70123456789';
my $cnt = 1000;
my $vs = {
regex => 'if ( $phone =~ /^7/ ) { }
$phone .= "";' x $cnt,
substr_eq => 'if ( substr($phone, 0, 1) eq "7" ) { }
$phone .= "";' x $cnt,
substr => 'if ( substr($phone, 0, 1) == 7 ) { }
$phone .= "";' x $cnt,
};
print "Benchmark: $Benchmark::VERSION\n";
print "PERL: $]\n";
cmpthese -20, $vs;
__END__
Benchmark: 1.07
PERL: 5.008008
Rate substr substr_eq regex
substr 2451/s -- -17% -51%
substr_eq 2947/s 20% -- -41%
regex 5027/s 105% 71% --
Benchmark: 1.07
PERL: 5.008008
Rate substr substr_eq regex
substr 2462/s -- -16% -52%
substr_eq 2922/s 19% -- -43%
regex 5093/s 107% 74% --
Benchmark: 1.07
PERL: 5.008008
Rate substr substr_eq regex
substr 2433/s -- -15% -52%
substr_eq 2878/s 18% -- -43%
regex 5066/s 108% 76% --
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081225/441127a8/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm