Prestatiemeting en profiling
Met prestatietellers bleek dat er zeer veel sprongvoorspellingsfouten zijn. Welke verbetermethode is geschikt?
- ANog meer sprongen aan de lus toevoegen
- BDe gegevens sorteren zodat het sprongresultaat beter voorspelbaar is, of sprongen zelf elimineren door voorwaardelijke selectie of berekening
- CDe cachecapaciteit verkleinen
Antwoord en toelichting tonen
Antwoord: B. De gegevens sorteren zodat het sprongresultaat beter voorspelbaar is, of sprongen zelf elimineren door voorwaardelijke selectie of berekening
Bij een verkeerde sprongvoorspelling gooit de CPU de speculatief uitgevoerde instructies weg en begint opnieuw, wat per keer meer dan een tiental cycli kost. Bij willekeurige gegevens is het resultaat van een sprong als “als de waarde ≥ 128” niet te voorspellen. Door de gegevens vooraf te sorteren worden de resultaten gegroepeerd en wordt de voorspelling vaker juist, en met voorwaardelijke selectie-instructies of bitbewerkingen verdwijnt de sprong zelf. De compiler kan ook worden aangezet tot dergelijke transformaties.