[Moscow.pm] Решил опубликовать модуль.
Иван Бессарабов
ivan на bessarabov.ru
Чт Июл 16 23:32:28 PDT 2009
Привожу результаты работы бенчмака на моей машине:
{{{
Benchmark: running constant, global, local for at least 10 CPU seconds...
constant: 10 wallclock secs (10.63 usr + 0.01 sys = 10.64 CPU) @
2232.24/s (n=23751)
global: 11 wallclock secs (10.52 usr + 0.01 sys = 10.53 CPU) @
1669.04/s (n=17575)
local: 11 wallclock secs (10.57 usr + 0.02 sys = 10.59 CPU) @
1746.46/s (n=18495)
}}}
В примере показано, как красиво будут определятся константы:
{{{
use FLAGS::SET {
aaa => 1,
bbb => 2,
ccc => 3,
};
use FLAGS::SET
ddd => 4,
eee => 5,
fff => 6,
;
use FLAGS::SET DEBUG => 1;
}}}
Денис, допиши еще в файл test.pl сразу пример, как выдергивать
константы (лично я не сразу просек, как это делать)
{{{
use FLAGS qw(DEBUG);
print "Debug is on.\n" if DEBUG;
}}}
Я чуть-чуть поигрался с твоим future модулем - мне нравится =) Буду
рад и спольлзовать, когда ты зальешь его на сипан.
16 июля 2009 г. 20:23 пользователь Denis Evdokimov
(evdokimov.denis на gmail.com) написал:
> Предпосылки:
> Основной плюс констант в том, что они подставляется на этапе "компиляции".
> В добавок ко всему, все условия содержащие только константы выкидываются.
> Так
> if(1)
> {
> print "text";
> }
> преобразуется в
> print "text";
>
> А
> if(0)
> {
> print "text";
> }
> просто выбросится.
>
>
> В подтверждение этих слов:
>
> use Benchmark qw(:all);
>
> use constant DEBUG => 0;
> our $DEBUG_global = 0;
> my $DEBUG_local = 0;
> my $test = {
> constant => sub {
> for ( 0 .. 10000 )
> {
> if (DEBUG)
> {
> warn "DEBUG";
> }
> }
> },
> global => sub {
> for ( 0 .. 10000 )
> {
> if ($DEBUG_global)
> {
> warn "DEBUG";
> }
> }
> },
> local => sub {
> for ( 0 .. 10000 )
> {
> if ($DEBUG_local)
> {
> warn "DEBUG";
> }
> }
> },
> };
>
> timethese(-10, $test);
>
>
>
> Зная об этом поведении я пользовался следующим хаком
> В начале программы писал
> use constant DEBUG => 0;
> а в подключаемых модулях писал
> if(main::DEBUG)
> {
>
> }
> Но...
> 1. Это не красиво
> 2. Обязывает прописывать все константы
>
>
> Вот я и решил избавиться от этих проблем.
> Предположительное название модуля FLAGS.
> Исходники и пример использования в приложении.
> Всё очень сумбурно, так что жду вопросы и комментарии.
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
--
bessarabov
Подробная информация о списке рассылки Moscow-pm