gpt4 book ai didi

performance - Julia 比Java慢得多

转载 作者:行者123 更新时间:2023-12-04 04:59:46 28 4
gpt4 key购买 nike

我是Julia的新手,并且编写了一个简单的函数来计算RMSE(均方根误差)。 ratings是评分矩阵,每行是[user, film, rating]。有1500万个收视率。 rmse()方法耗时12.0 s,但是Java实现快约188倍:0.064 s。为什么Julia的执行速度这么慢?在Java中,我正在使用Rating对象数组,如果它是多维int数组,则它甚至会更快。

ratings = readdlm("ratings.dat", Int32)

function predict(user, film)
return 3.462
end

function rmse()
total = 0.0
for i in 1:size(ratings, 1)
r = ratings[i,:]
diff = predict(r[1], r[2]) - r[3]
total += diff * diff
end
return sqrt(total / size(ratings)[1])
end

编辑:避免了全局变量后,它在1.99 s(比Java慢31倍)中完成。删除 r = ratings[i,:]后,速度为0.856 s(慢13倍)。

最佳答案

一些建议:

  • 不要使用全局变量。由于烦人的技术原因,它们运行缓慢。而是将ratings作为参数传递。
  • r = ratings[i,:]行进行复制,速度很慢。相反,请使用predict(r[i,1], r[i,2]) - r[i,3]
  • square()可能比x*x更快-试试吧。
  • 如果您从源头上使用前沿的Julia,请查看全新的 NumericExtensions.jl package,它为许多常见的数值运算都疯狂地优化了功能。 (see the julia-dev list)
  • Julia必须在第一次执行代码时对其进行编译。在Julia中进行基准测试的正确方法是多次计时,而忽略第一次。
  • 关于performance - Julia 比Java慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251805/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com