Лично я редко бы удосужился использовать разреженный массив, состоящий только из 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% ненулей просто не достаточно "разреженно" для любого усиления в большинстве случаев.