[SP-pm] TRNGs com Rand
Renato Santos
renato.cron at gmail.com
Sat Nov 6 18:11:53 PDT 2010
ThannkS! Devo aprender a fazer extensões em XS
O q acho meio chato, e q precisa ser em c puro, sem c++.
Ou, criar uma lib em c++ e um link com C e um Xx pra perl.
Em nov 6, 2010 11:05 PM, "Stanislaw Pusep" <creaktive at gmail.com>escreveu:
List::Util wins, flawless victory!
(resultado para um array de 100 elementos)
Rate alg_num_shuffle pusep map sort fisher_yates
list_util
alg_num_shuffle 10104/s -- -1% -2% -18% -19%
-91%
pusep 10172/s 1% -- -2% -18% -18%
-90%
map 10342/s 2% 2% -- -16% -17%
-90%
sort 12332/s 22% 21% 19% -- -1%
-88%
fisher_yates 12458/s 23% 22% 20% 1% --
-88%
list_util 106762/s 957% 950% 932% 766%
757% --
Aliás, aquele código que postei inicialmente era uma variante do algoritmo
de Fisher-Yates (http://en.wikipedia.org/wiki/Fisher-Yates) que fiz em 2
minutos. Refiz decentemente e teve uma melhoria significativa. O que salva a
minha reputação é que o Algorithm::Numerical::Shuffle traz uma outra
implementação do mesmíssimo algoritmo e ainda assim é capenga... Muita
coragem para publicar no CPAN, hein :)
"map" e "sort" são gambiarras one-liners. O engraçado é que shuffle via sort
é bem mais eficiente do que os outros (menos o List::Util que é XS) para
arrays pequenos (10 elementos):
Rate pusep alg_num_shuffle map fisher_yates sort
list_util
pusep 92304/s -- -1% -7% -16% -54%
-89%
alg_num_shuffle 92781/s 1% -- -6% -15% -54%
-89%
map 99073/s 7% 7% -- -10% -51%
-88%
fisher_yates 109484/s 19% 18% 11% -- -46%
-87%
sort 202283/s 119% 118% 104% 85% --
-76%
list_util 838226/s 808% 803% 746% 666%
314% --
E aqui está o código do benchmark: http://tinypaste.com/f989dd
ABS()
2010/11/6 Renato Santos <renato.cron at gmail.com> > > Preciso ao menos
comparar com a solução do P...
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm at pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20101106/8238b063/attachment.html>
More information about the SaoPaulo-pm
mailing list