Análise comparativa de desempenho computacional

Python puro versus otimizações com Numba em operações matemáticas intensivas

Autores

DOI:

https://doi.org/10.47385/tudoeciencia.2576.2025

Palavras-chave:

Python. Numba. JIT. Paralelização. Benchmark. Computação Científica. Otimização de Performance.

Resumo

Este estudo apresenta uma análise comparativa de desempenho entre Python puro e implementações otimizadas utilizando a biblioteca Numba para operações matemáticas intensivas. O objetivo foi avaliar os ganhos de performance obtidos através da compilação Just-In-Time (JIT) e paralelização automática em cálculos trigonométricos massivos. A metodologia consistiu na implementação de três versões de uma função que calcula a soma de senos e cossenos quadráticos: Python puro, Numba sequencial e Numba paralelo. Os testes foram executados em um array de 20 milhões de elementos utilizando operações trigonométricas para simular cargas computacionais intensivas. Os resultados demonstraram que a implementação com Numba sequencial obteve um speedup de aproximadamente 89x em relação ao Python puro, reduzindo o tempo de execução de 51,69 segundos para 0,58 segundos. Surpreendentemente, a versão paralela apresentou performance inferior à sequencial (1,31 segundos), evidenciando que nem sempre a paralelização resulta em melhorias de desempenho devido ao overhead de sincronização e características específicas da arquitetura computacional. Este estudo contribui para o entendimento das limitações e benefícios das diferentes abordagens de otimização em Python, fornecendo insights valiosos para desenvolvedores que trabalham com computação científica e análise de dados em larga escala.

Downloads

Não há dados estatísticos.

Referências

Amdahl, G. M. (1967). Validity of the single processor approach to achieving large scale computing capabilities. Proceedings of the April 18-20, 1967, spring joint computer conference (pp. 483-485). DOI: 10.1145/1465482.1465560. Acesso em: 17 ago. 2025.

Aycock, J. (2003). A brief history of just-in-time. ACM Computing Surveys, 35(2), 97-113. DOI: 10.1145/857076.857077. Disponível em: https://dl.acm.org/doi/10.1145/857076.857077. Acesso em: 17 ago. 2025.

Beazley, D. (2010). Understanding the Python GIL. PyCON Python Conference, Atlanta, Georgia. Disponível em: http://www.dabeaz.com/python/UnderstandingGIL.pdf. Acesso em: 17 ago. 2025.

Behnel, S., Bradshaw, R., Citro, C., Dalcin, L., Seljebotn, D. S., & Smith, K. (2011). Cython: The best of both worlds. Computing in Science & Engineering, 13(2), 31-39. DOI: 10.1109/MCSE.2010.118. Acesso em: 17 ago. 2025.

Dask Development Team. (2016). Dask: Library for dynamic task scheduling. Disponível em: https://dask.org. Acesso em: 17 ago. 2025.

Fleming, P. J., & Wallace, J. J. (1986). How not to lie with statistics: the correct way to summarize benchmark results. Communications of the ACM, 29(3), 218-221. DOI: 10.1145/5666.5673. Acesso em: 17 ago. 2025.

Gustafson, J. L. (1988). Reevaluating Amdahl's law. Communications of the ACM, 31(5), 532-533. DOI: 10.1145/42411.42415. Disponível em: https://dl.acm.org/doi/10.1145/42411.42415. Acesso em: 17 ago. 2025.

Harris, C. R., Millman, K. J., Van Der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., ... & Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357-362. DOI: 10.1038/s41586-020-2649-2. Disponível em: https://www.nature.com/articles/s41586-020-2649-2. Acesso em: 17 ago. 2025.

Lam, S. K., Pitrou, A., & Seibert, S. (2015). Numba: A LLVM-based Python JIT compiler. Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC (pp. 1-6). DOI: 10.1145/2833157.2833162. Disponível em: https://dl.acm.org/doi/10.1145/2833157.2833162. Acesso em: 17 ago. 2025.

Lee, E. A. (2006). The problem with threads. Computer, 39(5), 33-42. DOI: 10.1109/MC.2006.180. Disponível em: https://ieeexplore.ieee.org/document/1631937. Acesso em: 17 ago. 2025.

Oppenheim, A. V., & Schafer, R. W. (2010). Discrete-time signal processing. 3rd ed. Upper Saddle River: Prentice Hall. ISBN: 978-0131988422.

Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P. (2007). Numerical recipes: The art of scientific computing. 3rd ed. New York: Cambridge University Press. ISBN: 978-0521880688.

Van Rossum, G., & Drake, F. L. (2009). Python 3 Reference Manual. Scotts Valley: CreateSpace. ISBN: 978-1441412690.

VIRTANEN, Pauli et al. SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature methods, v. 17, n. 3, p. 261-272, 2020.

Weicker, R. P. (1984). Dhrystone: a synthetic systems programming benchmark. Communications of the ACM, 27(10), 1013-1030. DOI: 10.1145/358274.358283. Disponível em: https://dl.acm.org/doi/10.1145/358274.358283. Acesso em: 17 ago. 2025.

Downloads

Publicado

15-01-2026

Como Citar

Amadeu Souza, V. (2026). Análise comparativa de desempenho computacional: Python puro versus otimizações com Numba em operações matemáticas intensivas. Tudo é Ciência: Congresso Brasileiro De Ciências E Saberes Multidisciplinares, (4). https://doi.org/10.47385/tudoeciencia.2576.2025

Edição

Seção

Ciências Exatas, Tecnologias e Engenharias