Algo que siempre me ha preocupado en el blog es obtener el mejor rendimiento posible de Python y del resto de plataformas con las que trabajo. Reducir, aunque sea un poco, el tiempo de entrenamiento de los modelos o análisis de datos es siempre positivo. Así se puede dedicar más tiempo a analizar los resultados y menos a esperar por estos. Para lo que el procesador es algo importante. Por eso me he planteado comparar el rendimiento de mis equipos de trabajo a la hora de ejecutar el mismo código Python, un M1 frente a un Ryzen 7.
Medir el rendimiento con la sucesión de Fibonacci
El rendimiento de Python se puede medir por ejemplo con la sucesión de Fibonacci. Una función recursiva que es difícil de calcular y por lo tanto se puede apreciar fácilmente las diferencias entre dos configuraciones. Por eso la he utilizado en ocasiones anteriores, para comprobar las mejoras que ofrece compilar el código con Cython y para comparar Julia con Python.
Para comparar el rendimiento de un M1 frente a un Ryzen 7 con esta función se ejecutó en ambas máquinas el siguiente código.
import timeit def fibonacci(n): if n < 2: return n else: return fibonacci(n-1) + fibonacci(n-2) timeit.timeit("fibonacci(30)", "from __main__ import fibonacci", number=30)
Versión de Python usada en la comparativa
En ambos casos se ha usado el Python 3.9 que se incluye en la última versión de Anaconda. Empleando la versión compilada para M1 en el Mac y la versión 64 bits en Windows.
Los procesadores en comparación
Tanto M1 como Ryzen 7 son unas marcas que hacen referencia a diferentes modelos de procesadores por lo que es importante conocer lo que se usan para la comparativa. En el caso de M1 se usa un modelo M1 Pro con 10 núcleos. Por otro lado, el modelo del Ryzen 7 es el 5700 U con ocho núcleos, un modelo para portátil de quinta generación. Ambos procesadores fueron lanzados en 2021.Se puede encontrar más información sobre el procesador en el análisis del equipo usado.
Resultado de la comparativa del M1 frente Ryzen 7
Los resultados que se han obtenido para cada uno de los procesadores son los siguientes:
- M1 Pro: 7,51 segundos
- Ryzen 7: 9,04 segundos
Lo que indica que el M1 es aproximadamente un 19,5% más rápido que el Ryzen 7. Por lo que el M1 se puede considerar un buen equipo para ejecutar Python, aunque es necesario realizar comparativas más en profundidad.
Nótese que esta misma prueba se realizó en el 2019 con un i5 que requirió de 14 segundos para obtener los mismos resultados, prácticamente el doble del M1. Por lo que se puede apreciar un aumento considerable de rendimiento en ambos casos, aunque también puede influir que la versión de Python no sea la misma.
Conclusiones
En esta pequeña prueba se ha visto como el rendimiento de un procesador M1 es ligeramente mejor que un Ryzen 7 para ejecutar código Python. Una diferencia que puede ser importante a la hora de realizar tareas pesadas. Aunque, también hay que tener en cuenta la diferencia de precio que existe actualmente entre dos equipos con estos procesadores.