Perhaps try: z = e + spdiagm(fill(Inf, 50000), 0, 50000, 50000)
I can't try a matrix that large, I don't have the memory on this system--I tested with 5000, though, and it is massively faster. On Thursday, April 2, 2015 at 3:21:37 PM UTC-5, Seth wrote: > > > > Consider the following: > > julia> @time e = sprandn(50000,50000,0.3); > elapsed time: 95.837541848 seconds (17178 MB allocated, 0.08% gc time in 4 > pauses with 1 full sweep) > > then: > > julia> function doinf!(e::SparseMatrixCSC) > for i = 1:size(e)[1] > e[i,i] = Inf > end > end > doinf! (generic function with 1 method) > > julia> @time z = doinf!(e); > > > ...still going after about 20 minutes. I know sparse matrix insertion is > expensive, but is there a better way of doing this? (I don't have the > storage to make this a dense matrix.) I'm thinking it might be faster to > write my own function to assign random number or Inf within two loops, but > I'm surprised that the doinf! is taking so long. >
