Vector/Array multidimensionnel, même vitesse?
Salut,
pour mémorisé des points classé par coordonnées XYZ, je testais vite fait l'utilisation des vector multidimensionnel et array multidimensionnel
Au final je suis arrivé à des délais d’exécution quasiment similaire, le plus souvent à l'avantage du vector mais de peu
C'est peut être normal vu que les deux contiennent uniquement des valeurs boolean?
mais au cas je me demandais si j'avais fait une ou des erreurs quelque part vu que le Vector est sensé être plus rapide que ça par rapport au Array non ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
private var multiVector:Vector.<Vector.<Vector.<Boolean>>> = new Vector.<Vector.<Vector.<Boolean>>>(128,true);
private var multiArray:Array = new Array();
private var accessNumb:Number = 2000000;
private function populateMultiArray() {
var nX:Number = 64;
var nY:Number = 0;
var nZ:Number = 0;
var maxSize:Number = 128;
while (nY < maxSize) {
multiArray[nY] = new Array();
nZ = 0;
while (nZ < maxSize) {
multiArray[nY][nZ] = new Array();
nZ++;
}
nY++;
}
//insertion valeurs de 65x65x65 à 128x128x128
nZ = 64;
nY = 64;
while (nY < maxSize) {
nZ = 64;
while (nZ < maxSize) {
nX = 64;
while (nX < maxSize) {
multiArray[nY][nZ][nX] = true;
nX++;
}
nZ++;
}
nY++;
}
}
private function accessMultiArray() {
var i:Number = 0;
while (i < accessNumb) {
if (multiArray[rand(0,127)][rand(0,127)][rand(0,127)]) {
//true mais osef
}
i++;
}
}
private function populateMultiVec() {
var nX:Number = 0;
var nY:Number = 0;
var nZ:Number = 0;
var maxSize:Number = 128;
while (nY < maxSize) {
multiVector[nY] = new Vector.<Vector.<Boolean>>(maxSize,true);
nZ = 0;
while (nZ < maxSize) {
multiVector[nY][nZ] = new Vector.<Boolean>(maxSize,true);
nZ++;
}
nY++;
}
//insertion valeurs de 65x65x65 à 128x128x128
nX = nY = nZ = 64;
while (nY < maxSize) {
nZ = 64;
while (nZ < maxSize) {
nX = 64;
while (nX < maxSize) {
multiVector[nY][nZ][nX] = true;
nX++;
}
nZ++;
}
nY++;
}
}
private function accessMultiVec() {
var i:Number = 0;
while (i < accessNumb) {
if (multiVector[rand(0,127)][rand(0,127)][rand(0,127)]) {
//true mais osef
}
i++;
}
} |
Délai populate multivector: 0.031 seconds
Délai populate multiarray: 0.046 seconds
Délai d'accès multivector: 1.688 seconds
Délai d'accès multiarray: 1.703 seconds
A moins que ce soit la façon de calculer le délai d'execution qui n'est pas fiable ?
Code:
1 2 3 4 5 6 7 8 9 10 11
|
//Start
init = new Date();
//...fonction
//End
done = new Date();
//Display
trace("text: " + ( ( done.getTime()-init.getTime() ) / 1000 ) + " seconds"); |
D'ailleurs au passage, il y a moyen de savoir combien de mémoire ça bouffe précisément? Dans l'espoir que le Vector soit plus light :aie: