Sparse vs Normal Array Matlab

后端 未结 2 1572
盖世英雄少女心
盖世英雄少女心 2020-12-09 19:24

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?

2条回答
  •  北荒
    北荒 (楼主)
    2020-12-09 19:47

    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.

提交回复
热议问题