Compilers

Hoeveel keer worden de iteratietest en sprong uitgevoerd als een lus met 100 iteraties wordt herschreven met loop unrolling waarbij de body viermaal achter elkaar wordt gezet? (100 is deelbaar door 4.)

  1. A100 keer
  2. B25 keer
  3. C400 keer
Antwoord en toelichting tonen

Antwoord: B. 25 keer

Als de body viermaal achter elkaar wordt gezet, voert één iteratie het werk van vier oorspronkelijke iteraties uit, zodat het aantal iteraties 100 ÷ 4 = 25 wordt en ook de iteratietest en sprong 25 keer plaatsvinden. Vergeleken met de oorspronkelijke 100 wordt de overhead van sprongen enz. een vierde. Als het aantal niet deelbaar is door 4, wordt achteraan een korte lus toegevoegd om het restant te verwerken. 100 keer is het aantal zonder unrolling en 400 keer is een foutief vermenigvuldigde waarde van het aantal bewerkingen in de body.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke algemene volgorde waarin uit een C-programma een uitvoerbaar bestand ontstaat is juist?
  2. Hoe heet de optimalisatie waarbij een korte reeks gegenereerde machinecode door een klein venster wordt bekeken en onnodige combinaties van instructies door betere instructies worden vervangen?
  3. Welke combinatie van een optimalisatie die na het inlinen van sq in de bovenstaande code volgt en het resultaat daarvan is juist?
  4. Welke uitspraak over software pipelining is juist?
  5. Waarom herordent een compiler onder strikte instellingen de optelling (a + b) + c van floating-pointgetallen niet eigenmachtig tot a + (b + c)?

Vergelijkingen bij dit onderwerp