poster
2019-12-10, 20:48
在Matlab中,如果我仍然需要进行大量计算,并且稀疏数组比普通数组好一点,并且该数组中约25%为非零值,那在什么时候呢?
回答:
就个人而言,我很少会因为只有25%非零的数组而感到稀疏。如果您不相信我,请自己尝试。
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. 作为稀疏矩阵,与之相关的额外工作花费太多,不值得打扰。现在尝试使用真正稀疏的矩阵。
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. 当然,您自己的问题会有所不同,但不会有所不同。对于使用真正稀疏矩阵的人来说,稀疏矩阵是一个真正的福音,但是在大多数情况下,只有25%的非零值根本不足以带来任何收益。
更多&回答... (https://stackoverflow.com/questions/3292437)
回答:
就个人而言,我很少会因为只有25%非零的数组而感到稀疏。如果您不相信我,请自己尝试。
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. 作为稀疏矩阵,与之相关的额外工作花费太多,不值得打扰。现在尝试使用真正稀疏的矩阵。
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. 当然,您自己的问题会有所不同,但不会有所不同。对于使用真正稀疏矩阵的人来说,稀疏矩阵是一个真正的福音,但是在大多数情况下,只有25%的非零值根本不足以带来任何收益。
更多&回答... (https://stackoverflow.com/questions/3292437)