[Madrid-pm] Optimizando el valor de vuelta de una subrutina

pancho horrillo pancho en pancho.name
Dom Mayo 27 07:42:45 PDT 2012


On Sun, May 27, 2012 at 03:13:19PM +0200, JJ Merelo wrote:
> Hola
Buenas.

> Pregunta corta: ¿Cómo se hace para que Perl no devuelva un valor de una
> subrutina?
AFAIK, return; devuelve undef.

> Pregunta larga: en el MasterMind hay subrutinas que se llaman millones (o
> miles de millones) de veces. El profiler dice que, curiosamente, el
> devolver el valor de la misma es el cuello de botella. Igual hay otra forma
> de solucionarlo, como meterlas inline (la verdad, no sé como hacerlo) pero
> lo que he hecho ha sido declarar el prototipo como que devuelvan void y
> hacer que se les pase el hashref de vuelta como parámetro. Marginalmente
> mejora algo, pero sigue devolviendo el valor devuelto por la última función
> en la subrutina (un map). Añadir return; no mejora prácticamente nada, y
> declararla como void con prototipo tampoco. ¿Alguna idea?
> 
Se me ocurre hacer un inline manual, construyendo código programáticamente que
incruste el código de la función llamada en la llamante, y luego haciendo eval
de ello.

No tengo tiempo de explicarlo más, cuando vuelva luego intentaré explayarme un
poco más.

Hope that it helps.

Cheers,

> Saludos
> 
> -- 
> JJ

> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm at pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm

-- 
pancho horrillo


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