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 rediger

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 rediger