Sorry, I still have trouble constructing this x ![]()
Does this look correct for a MWE (Please provide a copy-pastable example next time
)?
julia> A = sprand(10,20,0.5)
10×20 SparseMatrixCSC{Float64, Int64} with 93 stored entries:
⡙⠂⢍⣘⢪⣎⠴⢁⣹⡷
⠟⣅⢆⢀⣗⣠⡡⠨⡈⢬
⠈⠚⠘⠛⠂⠉⠉⠈⠊⠚
julia> x = sprand(10, 0.5)
10-element SparseVector{Float64, Int64} with 5 stored entries:
[1 ] = 0.766693
[2 ] = 0.66149
[4 ] = 0.385874
[8 ] = 0.90622
[10] = 0.931918
The x[QR.prow] allocates a bunch of new memory, which may be what slows you down here as I believe x is somewhat large. Sadly, using a view here doesn’t seem to help too much:
julia> @time y = QR.Q' * x[QR.prow];
0.000117 seconds (2.18 k allocations: 126.141 KiB)
julia> @time y = QR.Q' * @view x[QR.prow];
0.000104 seconds (2.17 k allocations: 125.047 KiB)
I think at this point there’s some expert in terms of sparse matrices etc. needed ![]()
Nevertheless, doesn’t the suggestion at the end of the post you linked do what you want? This one: