Compilers
Welk voorbeeld van constant folding in een compiler is juist?
- AEen deel dat dezelfde functie vele malen aanroept samenvoegen tot één aanroep
- Bx = 3 * 4 tijdens het compileren berekenen en tot x = 12 maken
- 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.