Ferramentas computacionais desempenham um papel central em economia. Hoje mais do que nunca. Nesta área muita pesquisa tem sido feita no sentido de otimizar algoritmos e modelos econométricos, ao mesmo tempo que aumenta a demanda pelos chamados "cientistas de dados" (data scientist) ou "minerador de dados" e o Econometrista (veja um post explicando a diferença entre "Mineração de Dados x Econometria", acessado em 02/07/2014).
Às vezes o responsável pela análise "se prende" a apenas uma ferramenta ou linguagem de programação (Mathematica, R, C++, Python etc.) e não se preocupa em verificar a performance do cálculo em outras linguagens. A diferença, no final do dia, pode se traduzir em um menor tempo gasto com estes cálculos. E tempo, como sabemos, é dinheiro.
Um olhar sobre a performance da linguagem de programação, partindo de um mesmo problema e algoritmo é a proposta do trabalho de dois pesquisadores americanos (S. Aruoba e Jesús Villaverde) no paper "A Comparison of Programming Language in Economics", NBER, Junho/2014.
O que eles fizeram? Um mesmo algoritmo do modelo neoclássico de crescimento econômico (stochastic neoclassical growth model) foi programado em várias linguagens de programação, tanto em Macs como em PC/Windows: C++, Fortran 2008, Java, Julia, Python, Matlab, Mathematica, e R. Os vários códigos foram executados e o tempo de resposta foi medido (menor tempo de processamento = melhor performance).
Você pode ver a tabela comparativa com um resumo de todos os testes de performance no final do paper, que tem apenas 16 páginas. Melhor, todos os códigos-fonte estão disponívels em https://github.com/jesusfv/Comparison-Programming-Languages-Economics.
Alguns números interessantes:
- C++ e Fortran ainda são as linguagens de melhor performance (menor tempo de resposta)
- A implementação em Python chegou a ser 269 vezes mais lento que o equivalente em C++
- Usando Numba (um compilador para Python), o resultado melhorou sensivelmente: apenas 1.62 vezes mais lento que em C++
- A linguagem "R" conseguiu ser até 700 vezes mais lenta que C++ (quando executado como script); na mesma versão compilada o resultado ficou entre 240 e 340 vezes mais lento que C++
(imagem: computador ENIAC, o primeiro computador digital eletrônico, inventado nos EUA para agilizar os cálculos balísticos durante a II Guerra Mundial, ficou operacional apenas 1946. By Revol Web/Flickr)