Compilers

Welk voorbeeld van constant folding in een compiler is juist?

  1. AEen deel dat dezelfde functie vele malen aanroept samenvoegen tot één aanroep
  2. Bx = 3 * 4 tijdens het compileren berekenen en tot x = 12 maken
  3. CDe body van een lus viermaal achter elkaar zetten en zo het aantal iteraties verminderen
Antwoord en toelichting tonen

Antwoord: B. x = 3 * 4 tijdens het compileren berekenen en tot x = 12 maken

Constant folding is een optimalisatie waarbij expressies waarvan de waarde al tijdens het compileren vaststaat vooraf worden berekend en door de resulterende constante worden vervangen. 3 * 4 is bij elke uitvoering 12, zodat tijdens de uitvoering niet hoeft te worden vermenigvuldigd. In combinatie met constant propagation kunnen ook berekeningen via variabelen in één keer worden gefold. Er zijn ook aandachtspunten, zoals dat bij floating point de afrondingsmethode gelijk moet zijn. Het achter elkaar zetten van lusbodies is loop unrolling, en het samenvoegen van functie-aanroepen is een andere optimalisatie.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke code ontstaat uiteindelijk als op de bovenstaande code herhaaldelijk constant propagation en constant folding worden toegepast?
  2. Welke uitspraak is juist over wat gebeurt als op de bovenstaande code common subexpression elimination wordt toegepast?
  3. Wat wordt bij het verwijderen van dode code (dead code elimination) verwijderd?
  4. Welke combinatie van voordeel en nadeel van het inlinen (inline expansion) van functies is juist?
  5. Welk effect van loop unrolling is juist?

Vergelijkingen bij dit onderwerp