【发布时间】:2017-12-14 16:28:04
【问题描述】:
想到 Julia 的 performance tips 我还没有找到任何关于如何使用三维数组加速代码的建议。
据我了解,d-element Array{Array{Float64,2},1} 在d(第三维度)较小时表现最佳。但是,我不确定d 很大时是否是这种情况。
对于 Julia 有没有关于这个主题的教程?
示例 1a (d=50)
x = [zeros(100, 10) for d=1:50];
@time for d=1:50
x[d] = rand(100,10);
end
0.000100 seconds (50 allocations: 396.875 KB)
示例 1b (d=50)
y=zeros(100, 10, 50);
@time for d=1:50
y[:,:,d] = rand(100,10);
end
0.000257 seconds (200 allocations: 400.781 KB)
示例 2a (d=50000)
x = [zeros(100, 10) for d=1:50000];
@time for d=1:50000
x[d] = rand(100,10);
end
0.410813 seconds (99.49 k allocations: 388.328 MB, 81.88% gc time)
示例 2b (d=50000)
y=zeros(100, 10, 50000);
@time for d=1:50000
y[:,:,d] = rand(100,10);
end
0.185929 seconds (298.98 k allocations: 392.898 MB, 6.83% gc time)
【问题讨论】: