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

Ruslan Zakirov ruz на bestpractical.com
Пн Июн 17 06:07:43 PDT 2013


2013/6/17 Vladimir Timofeev <vovkasm на gmail.com>

> 2013/6/17 Ilya Chesnokov <chesnokov.ilya на gmail.com>:
> >
> > 16 июня 2013 г., 8:44 пользователь Иван Бессарабов <ivan на bessarabov.ru>
> > написал:
> >
> >> > Мой типичный boilerplate такой:
> >> > ...
> >> >  use autodie qw<:all>;
> >>
> >> Вот тут пишут что это сильно замедляет работу:
> >>
> >>
> >>
> http://blogs.perl.org/users/vyacheslav_matjukhin/2013/06/dont-copy-use-autodie-in-every-module.html
> >>
> >
> > Насколько я понял, не работу, а скорость запуска приложения.
>
> Ага, тогда померяйте сами ;-)
> #!perl
> use Benchmark ':all';
>
> {
>     use autodie;
>     timethese(-2, { 'autodie on' => sub { chdir '/tmp' } });
> }
>
> {
>     no autodie;
>     timethese(-2, { 'autodie off' => sub { chdir '/tmp' } });
> }
>
> У меня результат такой:
> Benchmark: running autodie on for at least 2 CPU seconds...
> autodie on:  3 wallclock secs ( 1.96 usr +  0.15 sys =  2.11 CPU) @
> 155649.29/s (n=328420)
> Benchmark: running autodie off for at least 2 CPU seconds...
> autodie off:  2 wallclock secs ( 0.29 usr +  1.78 sys =  2.07 CPU) @
> 3220760.39/s (n=6666974)
>
>
Нужно мерять:

no autodie; chdir '/tmp' or die "can't change dir";

А иначе получается, что сравниваем код с проверкой ошибок и без проверки. Я
результат вам и без бенчмарка скажу.


> >
> >>
> >> 13 июня 2013 г., 14:14 пользователь Maxim Vuets <maxim.vuets на gmail.com>
> >> написал:
> >>
> >>> 2013/6/13 Ruslan Zakirov <ruz на bestpractical.com>:
> >>> >
> >>> > 2013/6/13 Maxim Vuets <maxim.vuets на gmail.com>
> >>> >>
> >>> >> 2013/6/13 Dmitry L. <dim0xff на gmail.com>:
> >>> >> > Привет!
> >>> >> >
> >>> >> > Возник вопрос, а где правильно (не с точки зрения синтаксиса, а
> >>> >> > вообще)
> >>> >> > и
> >>> >> > нагляднее писать use utf8 в файле с модулем?
> >>> >> > 1. до package My::Module;
> >>> >> > 2. после package My::Module;
> >>> >>
> >>> >> Прагма utf8 имеет лексическую область видимости. Объявите до ---
> будет
> >>> >> на файл. После --- на пакет.
> >>> >
> >>> >
> >>> > По этому все лексические прагмы нуно писать до пакета, в том числе
> >>> > strict,
> >>> > warnings... Один файл - один пакет - это хорошо, но иногда надо два и
> >>> > более
> >>> > и вот тогда может быть неприятный сюрприз.
> >>>
> >>> Говоря в общем, да, я согласен (-: Мой типичный boilerplate такой:
> >>>
> >>>     use strict;
> >>>     use warnings;
> >>>     use autodie qw<:all>;
> >>>     use utf8;
> >>>     use open qw<:utf8 :std>;
> >>>
> >>>
> >>>
> >>>
> ##############################################################################
> >>>     package My::Package;
> >>>
> >>>     use Something;
> >>> ...
> >>> --
> >>> 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,
> > Ilya Chesnokov
> >
> > --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> >
>
>
>
> --
> Vladimir Timofeev <vovkasm на gmail.com>
> --
> 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/20130617/91321d3c/attachment.html>


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