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

Dmitriy T. 403rus на gmail.com
Чт Мар 13 06:38:00 PDT 2008


Ну в принципе да медленнее на этом тесте. Правда я добавил в тест кроме 
get ещё и set - там он отстаёт всего в два раза где-то (а если увеличить 
размер до 1000 'x' то и вообще в 1.5).

Нашёл я ещё упоминание автора о том что он получил прирост при переходе 
с blessed hash:

I tested the performance of array-based Object::InsideOut objects on several
platforms, and was impressed with the results:  I got anywhere from 20%
(Solaris) to 40% (ActivePerl) performance improvement for basic fetch and store
operations over blessed-hash objects!  Additionally, array-based objects consume
less memory because Perl doesn't have to store hash keys for the object field data.

 
отсюда: http://www.cpanforum.com/posts/1316


Vladimir V. Perepelitsa wrote:
> 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
>>     
>
>   



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