[Moscow.pm] Прокомментируйте , плиз

Vladimir V. Perepelitsa inthrax на gmail.com
Чт Мар 13 05:50:55 PDT 2008


Benchmark: timing 1000000 iterations of A, I...
  A:  0 wallclock secs ( 0.52 usr +  0.00 sys =  0.52 CPU) @ 1923076.92/s
  I:  2 wallclock secs ( 1.83 usr +  0.04 sys =  1.87 CPU) @ 534759.36/s

       Rate    I    A
I  534759/s   -- -72%
A 1923077/s 260%   --

package A;
sub new { bless { test => 'x'x100 } }

package I; {
    use Object::InsideOut;
    my @test :Field
             :Standard(test)
             :Accessor(test);
}
...
my $oa = new A;
my $ii = new I ();$ii->set_test ( 'x'x100 );

my $r = timethese(1_000_000 => {
    A  => sub { my $x = $oa->{test} },
    I  => sub { my $x = $ii->test },
});

а чтоб не происходило autovivification в blessed hash'е есть restricted hash.
может как-нить представлю сообществу свой base object на рестриктед хэшах.

On Thursday 13 March 2008 14:39, Dmitriy T. wrote:
> Меня смущает то что цифру 40% они наверное откуда-то брали всё-таки. Вот
> думаю откуда...
>
> Ivan B. Serezhkin wrote:
> > Vladimir V. Perepelitsa wrote:
> >> On Thursday 13 March 2008 13:59, Dmitriy T. wrote:
> >>>     * Speed
> >>>
> >>>       When using arrays to store object data, Object::InsideOut objects
> >>>       are as much as 40% faster than /blessed hash/ objects for
> >>> fetching and setting data, and even with hashes they are still several
> >>> percent faster than /blessed hash/ objects.
> >>>
> >>> Врут? Или лукавят?
> >>
> >> наглейшее вранье.
> >> никаким способом нельзя сделать, чтоб вызов метода был быстрее выборки
> >> из хэша щас поставлю этот Object, добавлю в тест и запощу результат
> >
> > Имено так, ибо вызов метода - это выборка из хэша методов =)
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm

-- 
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956


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