Бегом марш!
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 раза быстрее, чем регулярными выражениями.