Czy język Julia jest naprawdę szybki?
Następującyten post Postanowiłem przetestować Julię przeciwko GNU Octave, a wyniki były niespójne z przyspieszeniami zilustrowanymi wjulialang.org.
Skompilowałem zarówno Julię, jak i GNU Octave zCXXFLAGS='-std=c++11 -O3'
, wyniki mam:
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
Czy ktoś mógłby wyjaśnić, dlaczego Julia jest wolniejsza od GNU Octave w tych podstawowych operacjach? Po rozgrzaniu powinien zadzwonić do LAPACK / BLAS bez narzutu, prawda?
EDYTOWAĆ:
Jak wyjaśniono w komentarzach i odpowiedziach, powyższy kod nie jest dobrym punktem odniesienia ani nie ilustruje korzyści płynących z używania języka w prawdziwej aplikacji. Kiedyś myślałem o Julii jako szybszym „Octave / MATLAB”, ale to znacznie więcej. To ogromny krok w kierunkuproduktywny, wydajne, naukowe obliczenia. Używając Julii, udało mi się 1) przewyższyć oprogramowanie w mojej dziedzinie badań napisanej w Fortran i C ++, a 2) zapewnić użytkownikom znacznie ładniejszy interfejs API.