Generating a sparse matrix from scratch seems to be quite memory intensive. 
and slow. Say I wish to create a large block diagonal matrix with 2x2 block 
entries.

Doing it naively is quite slow

function f(k)
  M = spzeros(2*k,2*k)
  for i = 1:k
    D = (i-1)*2 + 1:i*2
    M[D,D] = randn(2,2)
  end
  return M
end

julia> @time f(10000)
2.534277 seconds (239.26 k allocations: 3.013 GB, 15.58% gc time)

Is there a way to speed this up by preallocating the memory somehow?

Reply via email to