Matlab es más rápido que R… ¿y?

No sé si alguna vez en la vida he visto una copia legal de Matlab. Creo que no. Ni forzando la memoria consigo recordar haber conocido a alguien que haya pagado los 2000 euros que cuesta una licencia comercial en España.

Eso sí, he conocido a mucha gente a la que le gusta mucho. Y que habla maravillas de él, etc. En algún sitio lo habrán probado, presumo.

Los aficionados a Matlab lo son también a comentar lo rápido que es. He desperdiciado largas horas en aburridoras conversaciones acerca de lo veloz que es Matlab haciendo nosequé operaciones (que no realizo ni directa ni indirectamente casi nunca). Y de paso, a comentar lo bien que se compara contra R (¿por chinchar?): alguna vez he tenido que asistir con desigual grado de indiferencia a inopinadas e improvisadas sesiones de programación en las que construir comparativas que demuestren cuánto más gallardamente invierte unas matrices Matlab que R.

Hoy me he tropezado con un trabajo similar aunque algo más elaborado: una comparación de la velocidad de ejecución de un abanico de operaciones matemáticas entre R y Matlab. Y me apetece dejar hoy un comentario al respecto.

El primero es que no sé prácticamente nada de métodos numéricos para álgebra lineal. No sólo no llegué a aprender prácticamente nada del asunto sino que se me olvidó enseguida. Se me olvidó incluso dónde leí lo más útil de lo que conozco de la materia (creo que fue en la introducción al capítulo relativo al álgebral lineal del libro Numerical Recipes in C ): nunca, nunca, nunca uses tu propio código para implementar tal tipo de métodos numéricos (a no ser que te llames Kazushige Goto, añadía un amigo). Tanto R como Matlab (como Octave, como…) utilizan BLAS, LAPACK y librerías análogas para estos fines. Algunas son libres. Otras son propietarias y están optimizadas para determinadas arquitecturas de hardware. Matlab, aparentemente, usa una versión de BLAS, MLK, optimizada por Intel para sus máquinas. Algo parecido hace el R tuneado por Revolutions. Y no creo que sea imposible compilar R contra una de estas librerías (si uno paga el correspondiente precio de las licencias, claro).

Al final, esencialmente, una comparación entre la eficiencia de R y Matlab para realizar operaciones de álgebra lineal se reduce a una comparación entre distintas versiones de BLAS y LAPACK con sus desiguales grados optimización para la plataforma correspondiente. (El que quiera saber algo más al respecto en un contexto R-céntrico puede mirar aquí, aquí, en las páginas 46-49 de aquí o, principalmente, aquí).

Bien, concedido, Matlab es más rápido que R… ¿y?

Licencia Creative Commons
Matlab es más rápido que R… ¿y? por Carlos J. Gil Bellosta, a excepción del contenido de terceros y de que se indique lo contrario, se encuentra bajo una Licencia Creative Commons Attribution-ShareAlike 4.0 International Licencia.

4 comentarios sobre “Matlab es más rápido que R… ¿y?

  1. Freddy 8 octubre, 2010 17:57

    Discrepo un poco con tu opinión.

    Siempre ha sido importante la velocidad de los softwares y más aún de los softwares matemáticos y estadísticos; o que involucren a tales. No se está hablando de los costos de las licencias que son sencillamente ridículos.

    Sospecho que es el ámbito en el que uno se desenvuelve que hace que uno piense o crea que estas cosas son de poca importancia. En el desarrollo de los métodos seguramente será útil un programa que ejecute las cosas rápidamente. O como se sugiere, creo, en uno de los enlaces, que el programa que uno utiliza sea rápido (todos usáramos C si estuviéramos muy atentos a la velocidad).

    Por ejemplo, alguna vez utilicé Ra, de Stephen Milborrow, para correr un par de fores en R que de otra manera me hubieran tardado tres horas más de lo que tardó; pero sin duda fue una aplicación excepcional.

    En fin que pienso, al menos en mi caso, que R no tiene absolutamente nada que envidarle a otros programas pero no soy un desarrollador de métodos y prácticamente todo lo que he hecho ha sido en un tiempo razonable.

    Salud.

  2. datanalytics 9 octubre, 2010 18:51

    @Freddy
    Igual se ha diluido un tanto el quid de mi entrada. Ésta no hace sino aclarar que el hecho de que Matlab puede ser algo más rápido que una instalación por defecto de R en operaciones muy intensivas en álgebra lineal (subrayo: aplicaciones muy intensivas en álgebra lineal) se debe en gran medida a que aquél usa una versión propietaria y optimizada de BLAS y LAPACK.

    No está prohibido compilar R contra ellas para tener el mismo rendimiento cuando éste sea un requisito esencial.

    Vectorizar y paralelizar siguen siendo las recetas para mejorar la velocidad de R. El proyecto Ra fue (digo fue porque parece que ya no “es” más) una iniciativa interesante y no sé en qué andará.

  3. dcb 6 julio, 2012 13:35

    esta es una entrada ya antigua, pero me he encontrado con esto por casualidad y quería apuntar un par de links que a lo mejor ayudan a alguien..

    En primer lugar para mejorar la volocidad de manera “inmediata” se trata de sustituir de manera muy sencilla la librería de BLAS por defecto (en window la .dll) por la que apuntan en el link. Sustituir el archivo , reiniciar R y ya está. Si se vectoriza adecuadamente el código las ganacias pueden ser importantes. http://andrewgelman.com/2008/06/a_trick_to_spee/

    Si se utiliza junto con C++, el paquete RccpArmadillo permite hacer cálculos algebraicos realmente rápidos. En mi opinión R tal cual no es ni mucho menos de las herramientas más rápidas y eficientes pero si es de las más flexibles y mediante esa flexibilidad puede ganarse mucha rapidez.

    Para más info de estos temas, pongo este otro link..

    http://blog.revolutionanalytics.com/2010/06/performance-benefits-of-multithreaded-r.html

  4. datanalytics 6 julio, 2012 13:39

    Sí, es una entrada algo vieja. Y desde entonces, es cierto, ha habido mucho interés y muchas propuestas para mejorar la velocidad de R. Los resultados, estoy seguro, vamos a comenzar a verlos pronto.

    Personalmente (subrayo que es una opinión personal) R debería tratar de volverse compatible con alguna máquina virtual, como la de Java, por ejemplo, para heredar automáticamente las mejoras que tantos ojos y manos de primera fila están introduciendo en ellas y no malgastar esfuerzos en reinventar la rueda.

Comenta

Your email address will not be published.

Puedes usar estas etiquetas y atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>