[Cascavel-pm] get/set com AUTOLOAD

Marco A P D'Andrade mdacwb em gmail.com
Sexta Janeiro 27 21:43:59 PST 2006


Um pouco atrasada, mas segue ...


Nilson Santos Figueiredo Junior wrote:

>On 12/29/05, Joenio Marques <joenio em gmail.com> wrote:
>
>>é mesmo bem mais lento? humm... nao sabia nao!
>>vou dar uma olhada no Class::Accessor.
>>
>
>Bem, o Class::Accessor propriamente dito é algo em torno de 50% mais
>rápido, porém o Class::Accessor::Fast é quase 3 vezes mais rápido.
>
>
Segue em anexo pequenas alterações em seu script, onde acrescentei um 
cache para AUTOLOAD, uma técnica que achei muito interessante, aprendi 
com  DBIx::SearchBuilder e SOAP::Lite... e é utilizada em Class::Acessor ...

PS: Li sobre este tema no item 29 do livro "Effective Perl Programming" 
By Joseph & Randal ...

>Eu acabei de fazer um pequeno benchmark de testes, os resultados foram:
>


Os tempos: *Note que aumentei o numero de iterações ...

Benchmark: timing 2000000 iterations of AUTOLOAD, AUTOLOAD+Cache, 
Acessores manuais, Class::Accessor, Class::Accessor::Fast...
  AUTOLOAD: 37 wallclock secs (37.12 usr +  0.00 sys = 37.12 CPU) @ 
53879.31/s (n=2000000)
AUTOLOAD+Cache: 16 wallclock secs (15.29 usr +  0.00 sys = 15.29 CPU) @ 
130804.45/s (n=2000000)
Acessores manuais: 15 wallclock secs (14.91 usr +  0.00 sys = 14.91 CPU) 
@ 134138.16/s (n=2000000)
Class::Accessor: 30 wallclock secs (30.01 usr +  0.00 sys = 30.01 CPU) @ 
66644.45/s (n=2000000)
Class::Accessor::Fast: 16 wallclock secs (15.45 usr +  0.00 sys = 15.45 
CPU) @ 129449.84/s (n=2000000)


>
>1.85 CPU) @ 108108.11/s (n=200000)
>------------------------
>Por algum motivo, além da minha compreensão, o Class::Accessor::Fast
>foi *mais rápido* que os métodos acessores que eu criei manualmente.
>Quem quiser dar uma olhada no código que utilizei para benchmark, está
>como attachment.
>
Nai sei explicar o porque do Class::Accessor::Fast ter sido mais rápido 
que a "Acessores manuais"...

Sds,
Marco Antonio
Rio-PM
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : benchacc.pl
Tipo  : application/x-perl
Tam   : 1887 bytes
Descr.: não disponível
Url   : http://mail.pm.org/pipermail/cascavel-pm/attachments/20060128/c373fe83/benchacc.bin


Mais detalhes sobre a lista de discussão Cascavel-pm