[Moscow.pm] Где в модуле писать use utf8

Ruslan Zakirov ruz на bestpractical.com
Вт Июн 18 07:22:49 PDT 2013


Привет,

Полнейшее расстройство от производительности autodie.

Как раз сейчас на p5p в теме про implicit close обсуждается тема связаная с
autodie. В perl есть проблема, что если неявный close выполняется с
ошибкой, то программист никогда не увидит эту ошибку.

В процессе обсуждения было предложено решение добавить управление
обработкой ошибок как свойства handle'ов, что-то типа $fh->on_error('die')
или $fh->on_error('warn') с лексической прагмой для установки дефолтных
значений, что-то типа use open::on_error 'die'; Данное решение особого
энтузиазма не вызвало, но мне понравилось тем, что может решить проблему и
заменить autodie более быстрой реализацией внутри ядра. Для того, чтобы оно
появилось в ядре нужно продумать API, обсудить в листе p5p, реализовать и
будет оно в 5.20 и/или модулем на CPAN (не знаю можно ли будет портировать
решение на старые версии через модуль совместимости).


2013/6/18 Denis Evdokimov <evdokimov.denis на gmail.com>

> Мои 5 копеек.
>
> # opendir; closedir;
>
> time perl -e'for(0..1000000){opendir(my $dir, "/usr") or die; closedir
> $dir or die;}'
> real    0m2.707s
> user    0m1.484s
> sys    0m1.192s
>
> time perl -e'use autodie; for(0..1000000){opendir(my $dir, "/usr");
> closedir $dir;}'
> real    0m19.668s
> user    0m17.625s
> sys    0m1.948s
>
>
> # chdir; chdir;
>
> time perl -e'for(0..1000000){chdir "/usr" or die; chdir "/tmp" or die;}'
> real    0m0.849s
> user    0m0.112s
> sys    0m0.732s
>
> time perl -e'use autodie; for(0..1000000){chdir "/usr"; chdir "/tmp"}'
> real    0m15.357s
> user    0m14.037s
> sys    0m1.304s
>
> # А вот тут мы убеждаемся, что замедляется работа, а не старт
> time perl -e'use autodie; for(0..1){chdir "/usr"; chdir "/tmp"}'
>
> real    0m0.052s
> user    0m0.052s
> sys    0m0.000s
>
> P.S. А я так надеялся, что проблема в способе тестирования ((((
>
>
> 17 июня 2013 г., 17:49 пользователь Ruslan Zakirov <ruz на bestpractical.com>написал:
>
>>
>> 2013/6/17 Vladimir Timofeev <vovkasm на gmail.com>
>>
>>> autodie on:  3 wallclock secs ( 1.92 usr +  0.17 sys =  2.09 CPU) @
>>> 149655.50/s (n=312780)
>>> Benchmark: running autodie off for at least 2 CPU seconds...
>>> autodie off:  1 wallclock secs ( 1.18 usr +  0.89 sys =  2.07 CPU) @
>>> 1755538.65/s (n=3633965)
>>>
>>
>> Я не увидел разницу в количестве цифр. Мне показалось, что порядок 2
>> раза, а не 20. Тады ой и грустно.
>>
>>
>> --
>> Best regards, Ruslan.
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


-- 
Best regards, Ruslan.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20130618/7d89bf3c/attachment-0001.html>


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