[Madrid-pm] El tiempo irresistible de volver

Alex Muntada alexm en alexm.org
Sab Sep 25 12:21:33 PDT 2010


+ JJ Merelo <jjmerelo en gmail.com>:

> Pasando profiler a algunos programillas me he dado cuenta que return
> $foo tarda bastante tiempo; el problema es que se mete en la pila el
> resultado de la última sentencia de una subrutina hagas lo que hagas,
> con lo que consume bastante tiempo. No sé si pasarlo a un closure
> merecerá la pena, pero en todo caso, ¿hay alguna forma de evitar el
> return en una subrutina? ¿Quizás definiendo prototipos?

En vez de devolver el valor $foo con return por que no lo devuelves
por referencia en uno de los parámetros de la llamada?

use 5.010;
my $resultado = 0;
func(\$resultado);
say $resultado;

sub func {
    my ($res_ref) = @_;

    $$res_ref = 42;    # cálculo de $foo;

    return;
}

-- 
Alex Muntada <alexm en alexm.org>
http://alexm.org/


Más información sobre la lista de distribución Madrid-pm