Compilateurs

Si une boucle de 100 itérations est réécrite par déroulage avec quatre copies du corps, combien y a-t-il de tests de comptage et de branchements ? (100 est divisible par 4)

  1. A100
  2. B25
  3. C400
Afficher la réponse et l'explication

Réponse : B. 25

Avec quatre copies du corps, chaque itération effectue le travail de quatre itérations d'origine ; le nombre d'itérations devient 100 ÷ 4 = 25, et les tests de comptage et branchements passent aussi à 25. Par rapport aux 100 d'origine, le coût des branchements est divisé par quatre. Si le nombre d'itérations n'est pas divisible par 4, on ajoute après une courte boucle traitant le reste. 100 correspond à l'absence de déroulage, 400 à une multiplication erronée par le nombre de traitements du corps.

S'entraîner sur ce thème Retour au thème

Autres questions sur Compilateurs

  1. Quel est l'enchaînement courant permettant d'obtenir un exécutable à partir d'un programme C ?
  2. Comment appelle-t-on l'optimisation qui examine par une petite fenêtre de courtes séquences du code machine généré pour remplacer des combinaisons d'instructions inefficaces par de meilleures instructions ?
  3. Dans le code ci-dessus, quelle optimisation s'applique ensuite après l'expansion en ligne de sq, et avec quel résultat ?
  4. Quelle définition du pipeline logiciel (software pipelining) est correcte ?
  5. Pourquoi un compilateur, sous réglage strict, ne réordonne-t-il pas de lui-même l'addition en virgule flottante (a + b) + c en a + (b + c) ?

Comparatifs sur ce thème