Kikkehulloptimalisering

Kikkehulloptimalisering (engelsk: Peephole optimization) er innenfor kompilatorteori en form for kodeoptimalisering som utføres på et lite sett med instruksjoner i et segment med generert kode. Dette settet blir i metaforisk forstand kalt et «kikkehull» eller et «vindu» inn i koden. Optimaliseringen består i å gjenkjenne mønstre av instruksjoner som kan erstattes av kortere eller raskere mønstre av instruksjoner.

Fjerning av redundant kode

Her er et eksempel på eliminering av redundante lagringer av verdier.

 a = b + c;
 d = a + e;

kan implementeres som;

 d = b + c + e;

eller overført til assemblerspråk:

MOV b, R0  # Kopier b til registeret
ADD c, R0  # Tiføy  c til registeret, som nå er b+c
MOV R0, a  # Kopier registeret til a
MOV a, R0  # Kopier a til regsteret
ADD e, R0  # tilføy  e til registeret, som nå er a+e [(b+c)+e]
MOV R0, d  # Kopier registeret til d

blir erstattet av og optimalisert til

MOV b, R0 # Kopier b til registeret
ADD c, R0 # Tilføy c to til registeret, som nå er b+c (a)
MOV R0, a # Kopier registeret til a
ADD e, R0 # Tilføy e til registeret, som nå er b+c+e [(a)+e]
MOV R0, d # Kopier registeret til d

Litteratur

  • Aho, Alfred Vaino; Ullman, Jeffrey David (1977). Principles of Compiler Design. Addison-Wesley, august 1977. ISBN 0-201-00022-9. CS1-vedlikehold: Flere navn: forfatterliste (link)
  • McKeeman, W. M. (1965). Peephole optimization. Stanford University, California, Communications of the ACM, Volume 8, Issue 7, juli 1965. s. 443-444. 
Denne artikkelen er en spire. Du kan hjelpe Wikipedia ved å utvide den.
Autoritetsdata