Comment choisir entre utiliser un tableau de taille fixe (statique) et un tableau dynamique ?
Que sont-ils ?Il existe deux types de tableaux en VB : les tableaux dits de taille fixe (statiques), et les tableaux dynamiques. Ces derniers sont déclarés sans tailles et dimensionnés dynamiquement avant usage : Dim Tableau_1(100) As Long Dim Tableau_2() As Long ReDim Tableau_2(100) Quelles différences, quand les employer, comment choisir ?Ces deux types de tableau s'utilisent de la même façon, à savoir que l'on accède toujours à un élément par son indice. Les vraies différences sont plus fondamentales : Différences Tableau de taille fixe | Tableau dynamique | Dimensionnement à la compilation | Dimensionnement à l'exécution | Taille immuable, non modifiable | Redimensionnable à volonté | Erase ne libère pas la mémoire | Erase libère la mémoire | Comment choisir l'un ou l'autrePour un usage local, pour des tableaux de petite taille ou dans des cas particuliers où la taille du tableau est directement liée à l'usage, un tableau de taille fixe est adapté. On évite un Redim, c'est donc une bonne solution. Exemples d'utilisation 1Utilisation d'un tableau local, de petite dimension et au nombre d'éléments fixés :
Private Function Moyenne_4(a As Long, b As Long, c As Long, d As Long) As Double
Dim t(1 To 4) As Long Dim i As Long Dim r As Long t(1) = a: t(2) = b: t(3) = c: t(4) = d For i = 1 To 4 r = r + t(i) Next i Moyenne_4 = r / 4 End Function
Exemples d'utilisation 2On utilise un tableau pour stocker les résultats de tirage d'un dé à jouer. Ici, les mesures portent sur un dé à 6 faces. La dimension du tableau est connue à l'avance, elle ne changera pas. C'est la nature même de ce qui est mesuré qui fixe les dimensions du tableau. Const NOMBRE_FACES As Long = 6 Dim Nombre_Tirage_De(NOMBRE_FACES) As Long
Pour des tableaux de grande taille, ou quand le nombre d'éléments ne peut pas être déterminé à l'avance, ou pour implémenter des structures de données dynamiques, l'usage de tableaux dynamiques est définitivement recommandé. Il est de toute façon le seul qui permette l'allocation/réallocation. Tout ceci est exposé dans l'article : Comment réaliser des allocations dynamiques ?. Exemples d'utilisationPrivate Function Alea(ByVal n As Long) As Double() Dim t() As Double Dim i As Long ReDim t(n) For i = 1 To n t(i) = Rnd Next i Alea = t() End Function
Private Sub Command1_Click() Dim t() As Double
t() = Alea(100) Erase t() End Sub
Remarque : En fonction des options de compilation choisies, les performances pour ce qui est de l'accès aux éléments peuvent varier. C'est vrai pour les 2 types de tableaux. Avec les options par défaut, l'accès aux éléments est plus rapide avec un tableau statique. Cependant les différences sont si faibles et le gain porte sur des valeurs si petites que les performances ne doivent pas être un critère pour le choix de l'une ou l'autre variante de tableaux. Pour aller plus loin Voir aussi : |