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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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