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?