有两种方法可以初始化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)
Run Code Online (Sandbox Code Playgroud)
原始帖子可以在这里找到
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |