next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Ejercicio: Typeglobs Sup: Typeglobs Ant: Paso de filehandles como Err: Si hallas una errata ...

Typeglobs y eficiencia

Hacer un alias via un typeglob es mas eficiente que usar una referencia. Para verlo usaremos el módulo Benchmark el cual proporciona, entre otras muchas, la función timethese:
$ cat benchtypeglobs.pl
#!/usr/bin/perl
#use strict;
use Benchmark;

local $i;
*b = *i;
$r = \$i;

timethese(4,
  { reference => sub { for ($$r = 0; $$r < 1e6; $$r++) { $$r; } },
    typeglob  => sub { for ($b = 0; $b < 1e6; $b++) { $b; } }
  });
El resultado de la ejecución en nereida nos da una relación de apróximadamente 1.6 veces mas rápido:
$ ./benchtypeglobs.pl
Benchmark: timing 4 iterations of reference, typeglob...
 reference:  6 wallclock secs ( 6.57 usr +  0.00 sys =  6.57 CPU) @  0.61/s (n=4)
  typeglob:  4 wallclock secs ( 4.11 usr +  0.01 sys =  4.12 CPU) @  0.97/s (n=4)


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Ejercicio: Typeglobs Sup: Typeglobs Ant: Paso de filehandles como Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21