Comparación de 3 implementaciones de Common Lisp (Clisp, GCL y SBCL) mediante la función de Takeuchi

En artículos anteriores comentamos la función de Takeuchi como prueba de rendimiento y la usamos para la comparación del rendimiento de Haskell, Maxima y Common Lisp.

En este artículo voy a usar una variación de la prueba anterior para comparar tres implementaciones de Common Lisp: Clisp, GCL (GNU Common Lisp) y SBCL (Steel Bank Common Lisp).

La función de Takeuchi es
tak(x,y,z) = \newline     \left\{     \begin{array}{ll}       y, & \mathrm{si} \ x \leq y \\       \mathrm{tak}(\mathrm{tak}(x-1,y,z),                    \mathrm{tak}(y-1,z,x),                    \mathrm{tak}(z-1,x,y)) & \mathrm{en\ caso\ contrario}     \end{array}     \right.

La prueba consistirá en comparar los tiempos empleados en calcular tak(n,0,n+1) para n entre 10 y 15.
Read More “Comparación de 3 implementaciones de Common Lisp (Clisp, GCL y SBCL) mediante la función de Takeuchi”

Comparación de lenguajes de programación

The Computer Language Benchmarks Game es un sitio en el que se puede comparar cerca de 30 lenguajes de programación con 12 baterías de prueba sobre cuatro combinaciones de S.O./máquinas. En las comparaciones se miden la velocidad y el tamaño del código.

Por ejemplo, se puede ver el resultado de comparar Haskell con Lisp.

El sistema es abierto y los usuarios pueden agregar nuevas pruebas de rendimiento.

La función de Ackermann como prueba de rendimiento

En la entrada la función de Takeuchi como banco de prueba para la eficiencia usé la función de Takeuchi para comparar la eficiencia de Haskell (GHC) y Lisp (Clisp y LispWorks). En esta voy a hacer lo mismo con la función de Ackermann.

La función de Ackermann (también llamada función de Ackermann-Péter) es un ejemplo sencillo de función recursiva que no es primitiva recursiva. Definida en 1926 por Wilhelm Ackermann, pero se presenta frecuentemente en la forma propuesta por Rózsa Péter, que es la siguiente
<br /> A(m,n) =<br /> \left\{<br /> \begin{array}{ll}<br /> n+1,             & \mbox{si\ } m=0, \\<br /> A(m-1,1),        & \mbox{si\ } m>0 \mbox{\ y\ } n=0 \\<br /> A(m-1,A(m,n-1)), & \mbox{si\ } m>0 \mbox{\ y\ } n>0<br /> \end{array}<br /> \right.<br />
Read More “La función de Ackermann como prueba de rendimiento”

TAK como prueba de rendimiento

A partir del artículo La función de Takeuchi como banco de prueba para la eficiencia y sus comentarios he estado investigando sobre su uso. En este artículo resumo el resultado de las indagaciones.

La función de Takeuchi se utiliza en la prueba TAK cuyo creador es Richard P. Gabriel según afirma en su libro Performance and evaluation of LISP systems (MIT Press, 1985). En las páginas 81-91 de su libro describe la prueba TAK. En concreto,  indica su objetivo (p. 81)
Read More “TAK como prueba de rendimiento”