Compilers

Welke uitspraak over een uitvoeringsomgeving die JIT-compilatie gebruikt is juist?

  1. AHet hele programma wordt vóór de uitvoering naar machinecode vertaald en dan gedistribueerd
  2. BTijdens de uitvoering vaak gebruikte delen worden naar machinecode vertaald en ook informatie van tijdens de uitvoering kan worden gebruikt
  3. CEr wordt helemaal geen machinecode gebruikt en bytecode wordt eindeloos instructie voor instructie geïnterpreteerd
Antwoord en toelichting tonen

Antwoord: B. Tijdens de uitvoering vaak gebruikte delen worden naar machinecode vertaald en ook informatie van tijdens de uitvoering kan worden gebruikt

Bij JIT-compilatie wordt eerst bytecode geïnterpreteerd en uitgevoerd, en wanneer delen die vaak worden uitgevoerd (hotspots) worden gevonden, worden deze tijdens de uitvoering naar machinecode gecompileerd. Met informatie van tijdens de uitvoering, zoals welke takken werkelijk worden genomen en welke types worden doorgegeven, zijn gedurfde optimalisaties mogelijk die bij vooraf compileren moeilijk zijn. Er is ook een mechanisme om terug te vallen op interpretatie als de aannames niet blijken te kloppen. Alles vooraf vertalen is AOT-compilatie (ahead-of-time), en uitsluitend interpreteren is een zuivere interpreter.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke uitspraak over de basisopzet van LLVM is juist?
  2. In welke situatie wordt de instelling zonder optimalisatie (zoals -O0) bij de optie voor het optimalisatieniveau van een compiler vaak gebruikt?
  3. Welke uitspraak over profielgestuurde optimalisatie (PGO) is juist?
  4. Welke optimalisatie wordt het best mogelijk gemaakt door link-time optimization (LTO)?
  5. In C is overflow van gehele getallen met teken ongedefinieerd gedrag. Welke code kan een compiler die de bovenstaande functie optimaliseert op deze grondslag genereren?

Vergelijkingen bij dit onderwerp