Closed johnny-godoy closed 1 year ago
Hola Johnny, muchas gracias, acabo de aceptar el pull request :). Agradezco mucho el tiempo que te diste para mejorar el código. Espero podamos colaborar en más proyectos.
Saludos, Pablo
El mar, 11 abr 2023 a las 12:48, Johnny Godoy @.***>) escribió:
Además de arreglar el bug mencionado en #1 https://github.com/pabloisaacalexz/Visualizing-math/issues/1, este PR implementa varios cambios que mejoran el desempeño de la función LevyConstructionBM. Esto se logró modificando o eliminando ciclos for:
- La función get_indices se cambió por una versión vectorizada por NumPy.
- Se simplifcó la lógica para construir Z_scaled. La función diff se eliminó, utilizando funciones vectorizadas de NumPy para lograr el mismo resultado. Potencialmente se podría mejorar aún más utilizando conjuntos https://docs.python.org/3/tutorial/datastructures.html#sets, pero esto requeriría una re-implementación más grande, y esta función ya no es el cuello de botella (generar la animación lo es), así que no creo que valga mucho la pena.
- Se evitan ciclos que iteran sobre range y luego utilizan este índice para encontrar un elemento en una lista/arreglo, prefiriendo iterar sobre la lista/arreglo directamente.
- En las secciones que mejoraba la legibilidad, se utilizó list comprehension, que también tiene un pequeño efecto en la velocidad.
You can view, comment on, or merge this pull request online at:
https://github.com/pabloisaacalexz/Visualizing-math/pull/2 Commit Summary
- dfb4f2f https://github.com/pabloisaacalexz/Visualizing-math/pull/2/commits/dfb4f2fdc07ae1a8c8524efd086e853f0cceac16 perf: vectorization and comprehension
File Changes
(1 file https://github.com/pabloisaacalexz/Visualizing-math/pull/2/files )
- M animateLevysconstruction.ipynb https://github.com/pabloisaacalexz/Visualizing-math/pull/2/files#diff-ee2608914360373351134d4646b4f85acb1905f5992667a2ed038dc34f1a424a (94)
Patch Links:
- https://github.com/pabloisaacalexz/Visualizing-math/pull/2.patch
- https://github.com/pabloisaacalexz/Visualizing-math/pull/2.diff
— Reply to this email directly, view it on GitHub https://github.com/pabloisaacalexz/Visualizing-math/pull/2, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMXY77AISFTOWL7UXUM4WYTXAWDPFANCNFSM6AAAAAAW2Q5CAU . You are receiving this because you are subscribed to this thread.Message ID: @.***>
-- Pablo Zúñiga Rodríguez-Peña Estudiante Ingeniería Civil Matemática Estudiante Magíster en Cs. de la Ingeniería, Mención Matemáticas Aplicadas Universidad de Chile
Además de arreglar el bug mencionado en https://github.com/pabloisaacalexz/Visualizing-math/issues/1, este PR implementa varios cambios que mejoran el desempeño de la función
LevyConstructionBM
. Esto se logró modificando o eliminando ciclosfor
:get_indices
se cambió por una versión vectorizada por NumPy.Z_scaled
. La funcióndiff
se eliminó, utilizando funciones vectorizadas de NumPy para lograr el mismo resultado. Potencialmente se podría mejorar aún más utilizando conjuntos, pero esto requeriría una re-implementación más grande, y esta función ya no es el cuello de botella (generar la animación lo es), así que no creo que valga mucho la pena.range
y luego utilizan este índice para encontrar un elemento en una lista/arreglo, prefiriendo iterar sobre la lista/arreglo directamente.