Menu
Coddy logo textTech

Performance des boucles

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 13 sur 66.

Optimiser les performances des boucles peut considérablement améliorer la vitesse de votre application, en particulier avec de grands ensembles de données.

Stocker la longueur de la collection dans une variable avant la boucle :

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once

for (int i = 0; i < length; i++) // Use stored value
{
    Console.WriteLine(numbers[i]);
}

Évitez les appels répétés de méthodes dans les conditions de boucle, par exemple :

for (int i = 0; i < GetCount(); i++)
{
    // Loop body
}

La méthode GetCount() est appelée à chaque itération de la boucle. Cela signifie que si la boucle s'exécute 1000 fois, GetCount() sera exécutée 1000 fois également, car la condition de la boucle est évaluée avant chaque itération.

Voici comment le faire correctement :

int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Loop body
}

GetCount() n’est appelée qu’une seule fois avant le début de la boucle, et sa valeur est stockée dans la variable count. Ensuite, la boucle utilise cette valeur stockée pour toutes les itérations, éliminant le besoin d’appeler la méthode de manière répétée.

Cette approche peut rendre votre code plus rapide en réduisant les opérations redondantes, en particulier lorsque la méthode appelée effectue des calculs complexes ou un accès aux données.

challenge icon

Défi

Facile

Créez une méthode appelée optimizedSum qui :

  1. Prend un tableau d'entiers comme paramètre
  2. Calcule la somme de tous les éléments
  3. Implémente à la fois une approche optimisée et non optimisée :
    • Non optimisée : Appeler array.Length à chaque itération de la boucle
    • Optimisée : Mettre en cache la longueur avant la boucle
  4. Retourne le résultat de l'approche optimisée

Aide-mémoire

Stocker la longueur de la collection dans une variable avant la boucle pour éviter les accès répétés à la propriété :

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Stocker la longueur une seule fois

for (int i = 0; i < length; i++) // Utiliser la valeur stockée
{
    Console.WriteLine(numbers[i]);
}

Éviter les appels répétés de méthode dans les conditions de boucle en mettant en cache le résultat :

// Inefficace - méthode appelée à chaque itération
for (int i = 0; i < GetCount(); i++)
{
    // Corps de la boucle
}

// Optimisé - méthode appelée une seule fois
int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Corps de la boucle
}

Essayez vous-même

public class OptimizedSum
{
    // Implémentez la méthode optimizedSum
    public static int optimizedSum(int[] numbers)
    {
        // Écrivez votre code ici
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux