David Menéndez Hurtado

Python es lento

La programación científica consiste, en su mayor parte, en cálculos numéricos intensos. CPU en estado puro. Un lenguaje interpretado es, por construcción, más lento que su homólogo compilado, por lo que puede parecer un contrasentido usar Python para aplicaciones «pesadas».  Estamos perdiendo el tiempo, ¿o no?
Muchos programas científicos se ejecutan sólo una vez, son un cálculo concreto que no hará falta repetir. La mayor parte del tiempo del cálculo no es la ejecución del programa, sino escribirlo, trabajo de un humano. Aquí es donde entran las bondades de Python: es sencillo, rápido de escribir, y potente como el que más. Y, por lo sencillo que eso, aunque sea de naturaleza lenta (o precisamente por eso), se han creado muchas herramientas para mejorar su eficiencia de formas elegantes y pythónicas.
Muchas críticas sobre la lentitud de Python adolecen de alguno de estos problemas:

  • Benchmarks irreales o incorrectos: ¿quién necesita un programa para imprimir el primer millón de números naturales?
  • Desconocimiento del lenguaje. A veces hay formas mejores de hacer las cosas, más sencillas y óptimas.
  • Se limitan a la biblioteca estándar, que se queda coja para el cálculo numérico (como veremos más adelante).
  • No tienen en cuenta el tiempo necesario para escribirlo y depurarlo. Cuanto más largo sea el programa, más difícil será encontrar los problemas o añadirle nuevas funcionalidades (tiempo del programador).
  • Por lo tanto, usar un lenguaje de más alto nivel permite, a igualdad de inteligencia, tiempo y habilidad, crear un programa potencialmente más complejo y eficiente.
  • No son guays (pero nosotros sí).Leer más »Python es lento