Bonjour,
j'ai un tableau d'unsigned short � 3 entr�es, par exemple :
Il tr�s important, pour mon utilisation, de garder cette notion de tri-dimensionalit�. Et lorsque je traite un tableau[i][j][256 * 256], je n'utilise pas les autres tableaux[x][y][256 * 256].
Code : S�lectionner tout - Visualiser dans une fen�tre � part unsigned short myTab[4][4][256 * 256];
Je sais que l'utilisation de tableaux uni-dimensionnels est pr�f�r�e � des tableaux mutli-dimensionnels ; les temps d'acc�s aux �l�ments d'un tableau multi-dimensionnels sont plus longs.
Par contre, quelle est la meilleure solution ?
Cas n�1 : myTab devient un tableau uni-dimensionnel, et j'utilise des offsets pour acc�der aux parties qui m'int�ressent :
Par contre je risque d'encombrer le cache inutilement puisque, comme le l'ai dit plus haut, lorsque je traite un tableau[i][j][256 * 256], je n'utilise pas les autres tableaux[x][y][256 * 256].
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 unsigned short myTab[4 * 4 * 256 * 256]; int offset00 = 0; int offset01 = offset00 + 256 * 256; int offset02 = offset01 + 256 * 256; int offset03 = offset02 + 256 * 256; int offset10 = offset03 + 256 * 256; //... etc ... int offset33 = offset32 + 256 * 256; // et pour accéder à mon "original" myTab[2][1][65] myTab[offset21 + 65] = 8;
Cas n�2 : je d�clare 16 tableaux de 256 * 256 que je r�unis dans un tableau de pointeurs :
Dans ce cas, je me demande si �a ne revient pas finalement au cas original myTab[4][4][256*256]
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 unsigned short myTab00[256 * 256]; unsigned short myTab01[256 * 256]; unsigned short myTab02[256 * 256]; unsigned short myTab03[256 * 256]; unsigned short myTab10[256 * 256]; unsigned short myTab11[256 * 256]; unsigned short myTab12[256 * 256]; unsigned short myTab13[256 * 256]; //... etc ... // je réunis le tout dans une table de pointeurs unsigned short * ptrOnMyTab[4][4]; ptrOnMyTab[0][0] = &myTab00[0]; ptrOnMyTab[0][1] = &myTab01[0]; ptrOnMyTab[0][2] = &myTab02[0]; ptrOnMyTab[0][3] = &myTab03[0]; ptrOnMyTab[1][0] = &myTab10[0]; //... etc ... // et pour accéder à mon "original" myTab[2][1][65] ptrOnMyTab[2][1][65] = 8;
Alors qu'elle est la meilleure solution au final ?
Merci
Flo.
Partager