我试图通过将 R 函数移植到 Julia 来加速它,但令我惊讶的是 Julia 速度较慢。该函数按顺序更新向量列表(Julia 中的数组数组)。事先要更新的列表元素的索引是未知的,新向量的长度是未知的。我编写了一个测试函数来演示该行为。
朱莉娅
function MyTest(n)
a = [[0.0] for i in 1:n]
for i in 1:n
a[i] = cumsum(ones(i))
end
a
end
Run Code Online (Sandbox Code Playgroud)
电阻
MyTest <- function(n){
a <- as.list(rep(0, n))
for (i in 1:n)
a[[i]] <- cumsum(rep(1, i))
a
}
Run Code Online (Sandbox Code Playgroud)
通过将 n 设置为 5000、10000 和 20000,典型的计算时间为(21 次测试的中位数):
我使用了带有 64 位 Julia-1.3.1 和 64 位 R-3.6.1 的 Windows 笔记本电脑。
这两个函数都使用 64 位浮点类型。我真正的问题涉及整数,然后 R 更有利。但是整数比较是不公平的,因为 R 使用 32 …