有两种方法可以初始化NXN稀疏矩阵,该矩阵的条目将从一个/多个文本文件中读取。哪一个更快?我需要效率更高的一个,因为N很大,通常为10 ^ 6。
1)。我可以将(x,y)索引存储在数组x,y中,将条目存储在数组v中并声明
K = sparse(x,y,value);
2)。我可以宣布K = spzeros(N)
然后读取(i,j)坐标和值v并将其插入为 K[i,j]=v;
当他们正在阅读。在稀疏数组的Julia的页面上,我没有找到任何提示。
不要一一插入值:由于稀疏矩阵中的存储需要一遍又一遍地重新分配,因此效率极低。
您也可以使用BenchmarkTools.jl进行验证:
julia> using SparseArrays
julia> using BenchmarkTools
julia> I = rand(1:1000, 1000); J = rand(1:1000, 1000); X = rand(1000);
julia> function fill_spzeros(I, J, X)
x = spzeros(1000, 1000)
@assert axes(I) == axes(J) == axes(X)
@inbounds for i in eachindex(I)
x[I[i], J[i]] = X[i]
end
x
end
fill_spzeros (generic function with 1 method)
julia> @btime sparse($I, $J, $X);
10.713 μs (12 allocations: 55.80 KiB)
julia> @btime fill_spzeros($I, $J, $X);
96.068 μs (22 allocations: 40.83 KiB)
原始帖子可以在这里找到
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句