[Moscow.pm] Интересное о Encode.pm

Sergey Homenkow hsw на hsw.pp.ru
Пн Фев 18 07:52:58 PST 2008


Приветствую!

Для поднятия трафика и расширения кругозора предлагаю публиковать "интересные факты о...".

А то все молчат как партизаны и не рассказывают о всяких интересных вещах (например perl -e 'print a$->{b}').

В Encode.pm есть функции (encode|decode)_utf8.
По доке "Equivalent to $octets = encode("utf8", $string);", по факту работают через utf8::(decode|encode).

Сравниваем их с (encode|decode) ('utf8', ...):

=====
use utf8;
use Encode;
use Benchmark qw(:hireswallclock);

my $s_U = "Привет!";
my $s = encode_utf8($s_U);

timethese(1000000, {
     decode_w_param => sub { decode('utf8', $s) },
     decode_utf8    => sub { decode_utf8(   $s) },
});

timethese(1000000, {
     encode_w_param => sub { encode('utf8', $s_U) },
     encode_utf8    => sub { encode_utf8(   $s_U) },
});
=====


Benchmark: timing 1000000 iterations of decode_utf8, decode_w_param...
decode_utf8: 7.97996 wallclock secs ( 7.98 usr +  0.00 sys =  7.98 CPU) @ 125367.29/s (n=1000000)
decode_w_param: 7.02113 wallclock secs ( 7.02 usr +  0.00 sys =  7.02 CPU) @ 142538.98/s (n=1000000)
Benchmark: timing 1000000 iterations of encode_utf8, encode_w_param...
encode_utf8: 0.946596 wallclock secs ( 0.95 usr +  0.00 sys =  0.95 CPU) @ 1057851.24/s (n=1000000)
encode_w_param: 5.20548 wallclock secs ( 5.20 usr +  0.00 sys =  5.20 CPU) @ 192481.20/s (n=1000000)

decode('utf8', ...) на 16% быстрее decode_utf8(...).

encode('utf8', ...) в 5.5 раз медленее encode_utf8(...).



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