我是 Julia 的新手,我编写了一个简单的函数来计算 RMSE(均方根误差)。ratings
是一个评分矩阵,每一行是[user, film, rating]
. 有 1500 万个收视率。该rmse()
方法需要 12.0 秒,但 Java 实现大约快 188 倍:0.064 秒。为什么 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 秒内完成(比 Java 慢 31 倍)。删除 后r = ratings[i,:]
,它是 0.856 秒(慢 13 倍)。