Недавно я был заинтригован Julia-lang, так как он претендует на то, чтобы быть динамическим языком с производительностью, близкой к C. Однако мой опыт работы с ним пока не очень хороший (по крайней мере, с точки зрения производительности).
Приложение, которое я пишу, требует произвольного доступа к определенным индексам массива, а затем сравнивает их значения с другими конкретными индексами массива (в течение многих итераций). Следующий код имитирует мои потребности из программы:
Мой код Julia завершается за 8 секунд, в то время как код java-скрипта требует меньше 1 секунды в среде chrome!
Я делаю что-то не так с кодом Джулии? Заранее большое спасибо.
Юлия код здесь:
n=5000;
x=rand(n)
y=rand(n)
mn=ones(n)*1000;
tic();
for i in 1:n;
for j in 1:n;
c=abs(x[j]-y[i]);
if(c<mn[i])
mn[i]=c;
end
end
end
toc();
Javascript код: (> в 8 раз быстрее, чем код julia выше!)
n=5000; x=[]; y=[]; mn=[];
for(var i=0; i<n; i++){x.push(Math.random(1))}
for(var i=0; i<n; i++){y.push(Math.random(1))}
for(var i=0; i<n; i++){mn.push(1000)}
console.time('test');
for(var i=0; i<n; i++){
for(var j=0; j<n; j++){
c=Math.abs(x[j]-y[i]);
if(c<mn[i]){
mn[i]=c;
}
}
}
console.timeEnd('test');