A linguagem Julia é realmente tão rápida quanto se diz?
Segueesta postagem Decidi comparar Julia com o GNU Octave e os resultados foram inconsistentes com os avanços ilustrados emjulialang.org.
Eu compilei Julia e GNU Octave comCXXFLAGS='-std=c++11 -O3'
, os resultados que recebi:
a=0.9999;
tic;y=a.^(1:10000);toc
Elapsed time is 0.000159025 seconds.
tic;y=a.^(1:10000);toc
Elapsed time is 0.000162125 seconds.
tic;y=a.^(1:10000);toc
Elapsed time is 0.000159979 seconds.
-
tic;y=cumprod(ones(1,10000)*a);toc
Elapsed time is 0.000280142 seconds.
tic;y=cumprod(ones(1,10000)*a);toc
Elapsed time is 0.000280142 seconds.
tic;y=cumprod(ones(1,10000)*a);toc
Elapsed time is 0.000277996 seconds.
Juliatic();y=a.^(1:10000);toc()
elapsed time: 0.003486508 seconds
tic();y=a.^(1:10000);toc()
elapsed time: 0.003909662 seconds
tic();y=a.^(1:10000);toc()
elapsed time: 0.003465313 seconds
-
tic();y=cumprod(ones(1,10000)*a);toc()
elapsed time: 0.001692931 seconds
tic();y=cumprod(ones(1,10000)*a);toc()
elapsed time: 0.001690245 seconds
tic();y=cumprod(ones(1,10000)*a);toc()
elapsed time: 0.001689241 seconds
Alguém poderia explicar por que Julia é mais lenta que o GNU Octave com essas operações básicas? Depois de aquecido, deve chamar LAPACK / BLAS sem sobrecarga, certo?
EDITAR:
Conforme explicado nos comentários e respostas, o código acima não é uma boa referência nem ilustra os benefícios de usar a linguagem em um aplicativo real. Eu costumava pensar em Julia como uma "Octave / MATLAB" mais rápida, mas é muito mais que isso. É um grande passo paraprodutivo, computação científica de alto desempenho. Usando Julia, consegui 1) superar o software no meu campo de pesquisa escrito em Fortran e C ++, e 2) fornecer aos usuários uma API muito mais agradável.