Compilateurs
Quel exemple de repliement de constantes (constant folding) est correct ?
- ARegrouper en un seul appel les appels répétés d'une même fonction
- BCalculer x = 3 * 4 à la compilation pour obtenir x = 12
- CRecopier quatre fois le corps de la boucle pour réduire le nombre d'itérations
Afficher la réponse et l'explication
Réponse : B. Calculer x = 3 * 4 à la compilation pour obtenir x = 12
Le repliement de constantes est une optimisation qui calcule à l'avance les expressions dont la valeur est connue à la compilation et les remplace par la constante résultante. 3 * 4 vaut toujours 12 à chaque exécution ; il est inutile d'effectuer la multiplication à l'exécution. Combiné à la propagation de constantes, il replie aussi les calculs passant par des variables. Il faut toutefois prendre garde, par exemple, à aligner le mode d'arrondi en virgule flottante. La recopie du corps de boucle est le déroulage de boucle, et le regroupement d'appels de fonction une autre optimisation.