Comment : améliorer les performances d'une boucle
Mise à jour : novembre 2007
Vous pouvez optimiser les performances d'une boucle en utilisant les types de données les plus efficaces. Pour une boucle courte qui ne s'exécute pas plusieurs fois, la différence peut être négligeable. Toutefois, si la boucle s'exécute un grand nombre de fois, vous pouvez protéger les performances de manière considérable.
Integer et UInteger sont les types les plus efficaces sur les plateformes actuelles. Short, Long, UShort et ULong ne sont pas aussi efficaces, et Decimal est considérablement plus lent. Pour plus d'informations, consultez Types de données numériques.
Pour optimiser les performances d'une boucle For...Next
Utilisez le type de données le plus efficace pour la variable de contrôle. L'exemple suivant illustre certaines variations possibles sur une boucle. Les minutages absolus dépendent de la plateforme, mais les comparaisons à l'exécution restent valides.
For fastest As Integer = 0 to 1000000 ' Insert statements to execute for each value of fastest. Next fastest For notAsFast As Long = 0 to 1000000 ' Insert statements to execute for each value of notAsFast. Next notAsFast For muchSlower As Decimal = 0 to 1000000 ' Insert statements to execute for each value of muchSlower. Next muchSlower
Le premier cas s'exécute un peu plus rapidement que le second. Toutefois, Integer peut gérer des valeurs jusqu'à 2 147 483 647 et UInteger jusqu'à 4 294 967 295 uniquement. Les deuxième et troisième cas peuvent gérer des valeurs plus grandes puisque Long et Decimal acceptent une plus large gamme d'entiers, mais ils s'exécutent plus lentement. Il vous faudra peut-être prendre une décision de conception et choisir entre la vitesse et la capacité des types de données que vous utilisez.
Voir aussi
Tâches
Comment : transférer un contrôle hors d'une structure de contrôle
Comment : exécuter plusieurs instructions à plusieurs reprises
Comment : exécuter plusieurs instructions pour chaque élément dans une collection ou un tableau
Comment : passer à l'itération suivante d'une boucle
Concepts
Référence
For...Next, instruction (Visual Basic)