Search code examples
matlabperformancesparse-matrix

Sparse vs Normal Array Matlab


In Matlab, at what point is having a sparse array better than a normal array if I still have a lot of calculations to do on it, and about 25% of the array are non-zeros?


Solution

  • Personally, I'd rarely bother with sparse for an array that is only 25% non-zeros. If you don't believe me, try it yourself.

    A = sprand(2000,2000,0.25);
    tic,B = A*A;toc
    Elapsed time is 1.771668 seconds.
    
    Af = full(A);
    tic,B = Af*Af;toc
    Elapsed time is 0.499045 seconds.
    

    The extra work involved with this as a sparse matrix costs too much to be worth the bother. Now try it with a really sparse matrix.

    A = sprand(2000,2000,0.005);
    Af = full(A);
    
    tic,B = A*A;toc
    Elapsed time is 0.037763 seconds.
    
    tic,B = Af*Af;toc
    Elapsed time is 0.446680 seconds.
    

    Of course, your own problem will be different, but it will not be that different. Sparse matrices are a true boon for the person who uses truly sparse matrices, but 25% non-zeros is simply not "sparse" enough for any gain in most cases.