Sparse vs Normal Array Matlab

℡╲_俬逩灬. 提交于 2019-11-28 09:14:25

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.

Edit- misread the quesiton.

With 75% sparsity, you may very well see a significant performance increase with sparse matrix algorithms. I'd say it is definitely worth giving a try.

The two places where you will save- memory (reducing your memory use by a factor of four) and operations (each time you do a matrix-vector multiply, for example, you'll be greatly reducing the number of operations required). The mitigating factor in your case, may well be the size of your matrix. Moving to sparse matrix operation, you typically lose the nice caching characteristics you see with dense matrices. Thus, there is usually a threshold where the move from dense to sparse leads to efficiency increases.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!