[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