【发布时间】:2018-05-02 17:36:08
【问题描述】:
最近,我对 Julia-lang 很感兴趣,因为它声称是一种具有接近 C 性能的动态语言。但是,到目前为止,我的经验并不好(至少在性能方面)。 我正在编写的应用程序需要随机访问特定数组索引,然后将它们的值与其他特定数组索引进行比较(经过多次迭代)。以下代码模拟了我对程序的需求: 我的 Julia 代码在大约 8 秒内完成执行,而 java 脚本代码在 chrome 环境中需要不到 1 秒的时间! 我对 Julia 代码做错了吗?提前非常感谢。
这里是 Julia 代码:
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 代码:(> 比上面的 julia 代码快 8 倍!)
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');
【问题讨论】:
-
如果您还没有从(优秀的)答案中收集到这一点,请阅读官方文档中的performance tips 部分。它将极大地帮助您避免这些性能问题,而无需深入了解 Julia 的内部运作方式。
-
非常感谢,现在我看到了 Julia 在哪里以及如何在 JavaScript 性能方面大放异彩。
标签: performance julia benchmarking