[bcn-pm] Split: Perl vs. Python (vs. Awk?)
Salvador Fandiño
sfandinoayahoo.com
Dil Mar 13 07:36:43 PST 2006
--- Salvador Fandi�o <sfandino en yahoo.com> wrote:
>
>
> --- Enrique Nell <perl_nell en telefonica.net> wrote:
>
> >
> > Deber�ais aliaros Salva y t� para crear el m�dulo
> Split::Faster:-)
>
> lo suyo seria crear una optimizacion en el propio perl para
> construcciones del tipo
>
> @a = split //, $foo;
jugando con B::Deparse he visto que esto ya lo hace en algunas
ocasiones (desafortunadamente poco frecuentes). Probad
perl -MO=Deparse 'my @foo = split //, $ARGV[0]'
perl -MO=Deparse '@foo = split //, $ARGV[0]'
perl -MO=Deparse '@foo = split'
y vereis como en el primer y tercer caso aparece el opcode aasign y
en cambio en el segundo se pasa como una referencia al split.
Y para terminar un benchmark:
use Benchmark qw(cmpthese);
my @lexical;
my @t;
for (1..100) {
push @t, pack('c*', map { 32+int(rand 8) } (0..int(rand 100000)))
}
cmpthese ( -1,
{ lexical => sub { for my $t (@t) { @lexical = split //, $t} },
global => sub { for my $t (@t) { @global = split //, $t } } } );
en mi ordenador obtengo
s/iter lexical global
lexical 12.1 -- -39%
global 7.40 64% --
- Salva
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Més informació de la llista de correu Barcelona-pm