我正在使用Julia版本0.4.5并且我遇到了以下问题:据我所知,在稀疏矢量和密集矢量之间获取内积应该与通过稀疏矢量更新密集矢量一样快.后者慢得多.
A = sprand(100000,100000,0.01)
w = rand(100000)
@time for i=1:100000
w += A[:,i]
end
26.304380 seconds (1.30 M allocations: 150.556 GB, 8.16% gc time)
@time for i=1:100000
A[:,i]'*w
end
0.815443 seconds (921.91 k allocations: 1.540 GB, 5.58% gc time)
Run Code Online (Sandbox Code Playgroud)
我创建了一个我自己的简单稀疏矩阵类型,加法代码与内积相同.
难道我做错了什么?我觉得应该有一个特殊的功能来做操作w + = A [:,i],但我找不到它.
任何帮助表示赞赏.