Nouvelle implantation de Vector en mapped file
Salut, Pour minimiser l'utilisation de la memoire pour les tres grosses matrice, j'ai creer un backend pour les matrices (Vector) qui utilise des mapped files. En gros l'implantation - est 3 fois moins rapide que DoubleBigVector - est 2 fois plus rapide que DoubleVector (mais pas forcement un cas réel car toutes les valeurs sont différent du default) - consomme quasiment pas de mémoire (vu que tout est dans un fichier) donc il y a aussi moins de GC nécessaire pour libérer la mémoire après l'utilisation de la Matrice. Je vais faire des tests en l'utilisant pour Isis pour les simulations pour voir la différence de temps de Simulation et de mémoire utilisé. j'ai fait quelques tests: Sur une petite matrice: Perf FloatVector(1000000) Iterator init: 0.009 fill: 0.337 memory: 29,631Mo/204,188Mo Perf FloatVector(1000000) Index init: 0.000 fill: 0.265 memory: 28,619Mo/199,938Mo Perf FloatVector(1000000) Semantic init: 0.000 fill: 0.477 memory: 59,461Mo/203,938Mo Perf FloatBigVector(1000000) Iterator init: 0.002 fill: 0.361 memory: 4,981Mo/144,812Mo Perf FloatBigVector(1000000) Index init: 0.001 fill: 0.153 memory: 5,514Mo/204,625Mo Perf FloatBigVector(1000000) Semantic init: 0.001 fill: 0.366 memory: 36,027Mo/199,938Mo Perf DoubleVector(1000000) Iterator init: 0.000 fill: 0.317 memory: 24,368Mo/114,812Mo Perf DoubleVector(1000000) Index init: 0.000 fill: 0.365 memory: 24,424Mo/144,812Mo Perf DoubleVector(1000000) Semantic init: 0.000 fill: 0.524 memory: 33,317Mo/144,812Mo Perf DoubleBigVector(1000000) Iterator init: 0.003 fill: 0.061 memory: 9,579Mo/200,188Mo Perf DoubleBigVector(1000000) Index init: 0.002 fill: 0.058 memory: 9,586Mo/203,438Mo Perf DoubleBigVector(1000000) Semantic init: 0.002 fill: 0.255 memory: 39,954Mo/199,938Mo Perf DoubleBigMappedVector(1000000) Iterator init: 0.000 fill: 0.175 memory: 1,802Mo/203,062Mo Perf DoubleBigMappedVector(1000000) Index init: 0.001 fill: 0.124 memory: 2,615Mo/199,938Mo Perf DoubleBigMappedVector(1000000) Semantic init: 0.000 fill: 0.339 memory: 33,154Mo/202,812Mo Sur une grosse matrice: Perf FloatVector(15625000) Iterator init: 0.008 fill: 4.647 memory: 477,124Mo/1,087Go Perf FloatVector(15625000) Index init: 0.000 fill: 4.075 memory: 476,711Mo/1,087Go Perf FloatVector(15625000) Semantic init: 0.000 fill: 8.070 memory: 426,226Mo/1,086Go Perf FloatBigVector(15625000) Iterator init: 0.019 fill: 1.048 memory: 63,861Mo/1023,562Mo Perf FloatBigVector(15625000) Index init: 0.018 fill: 0.845 memory: 63,876Mo/1,001Go Perf FloatBigVector(15625000) Semantic init: 0.019 fill: 4.217 memory: 539,886Mo/1023,562Mo Perf DoubleVector(15625000) Iterator init: 0.000 fill: 4.806 memory: 690,878Mo/718,625Mo Perf DoubleVector(15625000) Index init: 0.000 fill: 6.772 memory: 629,978Mo/926Mo Perf DoubleVector(15625000) Semantic init: 0.000 fill: 9.944 memory: 400,148Mo/862Mo Perf DoubleBigVector(15625000) Iterator init: 0.035 fill: 0.904 memory: 124,914Mo/1,087Go Perf DoubleBigVector(15625000) Index init: 0.036 fill: 0.954 memory: 124,754Mo/1,086Go Perf DoubleBigVector(15625000) Semantic init: 0.036 fill: 4.213 memory: 600,251Mo/1,087Go Perf DoubleBigMappedVector(15625000) Iterator init: 0.000 fill: 2.770 memory: 7,465Mo/1,086Go Perf DoubleBigMappedVector(15625000) Index init: 0.005 fill: 3.578 memory: 11,747Mo/1,087Go Perf DoubleBigMappedVector(15625000) Semantic init: 0.031 fill: 16.138 memory: 486,612Mo/1,086Go interpretation :) - Double/float le type de donnée géré - Big/rien: Big indique qu'on a un grand tableau de toutes les données, rien indique qu'on a une valeur par defaut et seulement les valeurs des elements qui sont différents de cette valeur par defaut - le nombre entre parenthese est le nombre d'element de la matrice (15625000) - Iterator/Index/Semantic est le type de parcours de la matrice - init est le temps d'initialisation de la matrice (creation) - fill est le temps de remplissage de la matrice avec des valeurs toutes differentes (en utilisant le parcours susnommé - memory est la mémoire utilisé/mémoire total (un GC est fait avant chaque test) -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com
participants (1)
-
Benjamin POUSSIN