Dans Matlab, à quel point a un tableau clairsemé meilleur qu'un tableau normal si j'ai encore beaucoup de calculs à faire, et environ 25% du tableau sont non-zéros?Sparse vs Normal Array Matlab
Répondre
Personnellement, je m'embêterais rarement avec sparse pour un tableau qui n'est que de 25% non-zéros. Si vous ne me croyez pas, essayez-le vous-même.
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.
Le travail supplémentaire impliqué avec ceci comme une matrice clairsemée coûte trop cher pour valoir la peine. Maintenant, essayez-le avec une matrice vraiment clairsemée.
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.
Bien sûr, votre propre problème sera différent, mais il ne sera pas si différent. Les matrices éparses sont une véritable aubaine pour la personne qui utilise des matrices vraiment rares, mais 25% de non-zéros n'est simplement pas assez "clairsemé" pour tout gain dans la plupart des cas.
Édition - mal lu la question.
Avec 75% de parcimonie, vous pouvez très bien voir une augmentation significative des performances avec des algorithmes à matrice creuse. Je dirais que ça vaut vraiment le coup d'essayer.
Les deux endroits où vous économiserez de la mémoire (en réduisant votre utilisation de la mémoire par quatre) et des opérations (chaque fois que vous effectuez une multiplication matricielle-vectorielle, par exemple, vous réduirez considérablement le nombre d'opérations Champs obligatoires). Le facteur atténuant dans votre cas, pourrait bien être la taille de votre matrice. En passant à une opération matricielle clairsemée, vous perdez généralement les caractéristiques de mise en cache que vous voyez avec des matrices denses. Ainsi, il y a généralement un seuil où le passage de dense à clairsemé entraîne une augmentation de l'efficacité.
- 1. boost :: mpl for_each avec Array normal 'C'
- 2. Plist binaire Vs normal plist
- 3. Matlab vs Aforge vs OpenCV
- 4. matlab stateflow vs. Rhapsody
- 5. pointeur normal vs pointeur Auto (std :: auto_ptr)
- 6. PHP array vs mysql query
- 7. C++ Vector vs Array (Time)
- 8. java sparse matrix problem
- 9. Sparse Array en C! Comment l'accomplir? Puis-je attribuer uniquement des parties d'un tableau?
- 10. Redim booléen Array vs énumérer et définir
- 11. DOM vs Array - utilisation de la mémoire
- 12. json_encode comportement différent sur ArrayObject vs array()
- 13. Numpy/Python performant terriblement vs Matlab
- 14. Comment créer un fichier sparse sur NTFS?
- 15. UMFPACK et uBLAS Sparse de BOOST Matrice
- 16. Array Array to Object Array
- 17. boost :: array ne compile pas sur VS 2005
- 18. array_push() vs $ array [] = .... Lequel est le plus rapide?
- 19. PHP Array vs MYSQL Queries optimisation de la vitesse
- 20. AS3 Performance: Beaucoup de tableaux vs One Array + 'est'
- 21. ActionScript 3 Vecteur. <T> VS. Array
- 22. PHP: Array comme var_export/include vs (un) sérialiser vs json_ (en | de) code
- 23. ksh array array
- 24. php array array question
- 25. Java Array Char Array
- 26. conversion de collation normal?
- 27. Cryptographie. Anglais "texte normal"?
- 28. OpenGL quad from normal
- 29. Normal - Conversion RPN
- 30. JRuby Array to Java Array