À retenir
- Réduit le nombre de vérifications de la condition de sortie de boucle.
- Améliore l'utilisation du processeur en lui donnant plus d'instructions à traiter d'un coup.
- Augmente légèrement la taille du programme final.
Le déroulage de boucle est une technique d'optimisation qui consiste à réduire le nombre de répétitions d'une boucle en effectuant plusieurs opérations à chaque passage. Imaginez que vous deviez monter 10 marches : au lieu de lever le pied 10 fois (une marche à la fois), vous montez deux marches par deux marches pour arriver plus vite en haut en faisant moins de mouvements de contrôle.
Étymologie
Traduction directe de l'anglais loop unrolling ou loop unwinding. Le terme illustre l'idée de mettre à plat (dérouler) une structure circulaire pour la transformer en une suite d'instructions linéaires.
Exemples d'usage
- Au lieu d'une boucle
forqui additionne 100 nombres un par un, on crée une boucle qui additionne les nombres 4 par 4 (25 passages au lieu de 100). - Remplacer une petite boucle de 3 itérations par l'écriture explicite des 3 lignes de code correspondantes.
Cas d'usage
On utilise cette technique dans le développement de jeux vidéo, le traitement de signal, l'intelligence artificielle ou tout domaine nécessitant une vitesse d'exécution maximale. Elle intervient souvent lors de la phase de compilation du code source.
Bonnes pratiques
La règle d'or est de laisser le compilateur s'en occuper. Dérouler manuellement une boucle rend le code difficile à lire et peut saturer la mémoire cache de l'ordinateur, ce qui produirait l'effet inverse de celui recherché en ralentissant le programme.
Synonymes
Antonymes
Conseil
Si vous optimisez du code, ne le faites jamais au hasard. Utilisez un outil de mesure (profiler) pour vérifier si une boucle est réellement un goulot d'étranglement avant de tenter de la dérouler.
Questions fréquentes
Pourquoi le code va-t-il plus vite ?
Parce que le processeur perd moins de temps à vérifier si la boucle est finie et à 'sauter' au début du bloc d'instructions.
Est-ce risqué ?
Le risque principal est le 'code bloat' (gonflement du code), qui peut rendre le logiciel plus gourmand en mémoire vive.