Compilateurs
Quelle description de l'élimination des sous-expressions communes appliquée au code ci-dessus est correcte ?
x = (a + b) * c;
y = (a + b) * d;
- ACalculer a + b une seule fois, le stocker dans une variable temporaire et le réutiliser dans les deux expressions
- Bx et y étant des expressions similaires, supprimer le calcul de l'une d'elles
- CRemplacer la multiplication par une addition pour alléger le calcul
Afficher la réponse et l'explication
Réponse : A. Calculer a + b une seule fois, le stocker dans une variable temporaire et le réutiliser dans les deux expressions
L'élimination des sous-expressions communes est une optimisation qui, lorsqu'une expression de même valeur est calculée plusieurs fois, ne la calcule qu'une fois et réutilise le résultat. Ici, en calculant t = a + b puis x = t * c et y = t * d, on économise une addition. Il faut toutefois vérifier que a et b ne sont pas modifiés entre les deux expressions. x et y ayant des valeurs différentes, aucune ne peut être supprimée. Le remplacement de la multiplication par une opération plus légère est une autre optimisation, la réduction de force.