Partager via


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

Structures de boucle

Référence

For...Next, instruction (Visual Basic)

Autres ressources

Flux de contrôle en Visual Basic