Sep. 17th, 2007

shoorick: (Default)
Из двух вариантов, одинаковых по сложности написания, надо выбирать тот, что шустрее работает. В перле скорость выполнение можно замерить средствами модуля 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 раза быстрее, чем регулярными выражениями.
shoorick: (Default)
Пробуем выполнить scalar($array_ref), где $array_ref — ссылка на массив:
#!/usr/bin/perl -w
use strict;
$\ = "\n";
$, = ': ';

my @array = qw(one two three);
my $array_ref = \@array;

print 'scalar @$array_ref', scalar @$array_ref;
print 'scalar  $array_ref', scalar  $array_ref;
Получаем:
scalar @$array_ref: 3
scalar  $array_ref: ARRAY(0x804db74)
Хотя всё в man prelref написано...
shoorick: (Default)
Программирую, ошибаясь раскладкой. Получается то ызус, то ыуда.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 11th, 2025 01:18 pm
Powered by Dreamwidth Studios