Бегом марш!
Sep. 17th, 2007 12:27 pmИз двух вариантов, одинаковых по сложности написания, надо выбирать тот, что шустрее работает. В перле скорость выполнение можно замерить средствами модуля Benchmark. Пробуем:
#!/usr/bin/perl -w
use strict;
use Benchmark qw(:all);
my $long = 'c_documents_and_settings_administrator_moi_dukumenty_files_very_very_very_long_name.doc';
my $short;
cmpthese(1e6, {
'regexp' => sub { $short = $1 if ($long =~ /(.{1,25})$/); },
'substr' => sub { $short = substr $long, -25 },
});
Получаем:То есть, получение хвоста строки функциейRate regexp substr regexp 315271/s -- -77% substr 1361702/s 332% --
substr осуществляется в 3 раза быстрее, чем регулярными выражениями.
no subject
Date: 2007-09-17 06:45 am (UTC)Регэкпы тормозные
Date: 2007-09-17 10:14 am (UTC)no subject
Date: 2007-09-17 10:57 am (UTC)Поглядев внимательнее
Date: 2007-09-17 11:46 am (UTC)