Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering

Innholdsfortegnelse:

Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering
Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering

Video: Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering

Video: Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering
Video: Klarer DU å se forskjell? 🍆💦 2024, November
Anonim

Hovedforskjell - Maskinavhengig vs Maskinuavhengig kodeoptimalisering

Dataprogrammer er sett med instruksjoner gitt til maskinvare for å utføre oppgaver. Disse programmene er for det meste skrevet på høyt nivå språk, og datamaskinen forstår ikke språket. Derfor blir en kompilator brukt til å konvertere disse instruksjonene til maskinkode eller målkode. Det går gjennom flere faser for å bygge målkoden. Kodeoptimalisering er en av dem. Det er to optimaliseringsteknikker som maskinavhengig og maskinuavhengig kodeoptimalisering. Hovedforskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering er at maskinavhengig optimalisering blir brukt på objektkode mens maskinuavhengig kodeoptimalisering blir brukt på mellomkoden.

INNHOLD

1. Oversikt og nøkkelforskjell

2. Hva er maskinavhengig kodeoptimalisering

3. Hva er maskinuavhengig kodeoptimalisering

4. Likheter mellom maskinavhengig og maskinuavhengig kodeoptimalisering

5. Sammenligning side om side - maskinavhengig og maskinuavhengig kodeoptimalisering i tabellform

6. Oppsummering

Hva er maskinavhengig kodeoptimalisering?

Når du konverterer kildekoden til objektkode eller målkode, går kompilatoren gjennom flere faser. Først blir kildekoden gitt til Lexical analysator som produserer tokens. Deretter blir utgangen gitt til syntaksanalysator som undersøker om de genererte tokens er i logisk rekkefølge. Den produksjonen blir gitt til den semantiske analysatoren. Anta at det er et stykke kode som p = q + r;

Her er p, q heltall, men r er en flottør. Ved hjelp av den semantiske analysatoren konverteres c-heltallsvariabelen til en flottør. Derfor analyserer den semantisk. Utgangen fra den semantiske analysatoren går til den mellomliggende kodegeneratoren. Den returnerer en mellomliggende kode som deretter går til kodeoptimerer. Kodeoptimalisering er prosessen med å eliminere ikke-essensielle programuttalelser uten å endre betydningen av den faktiske kildekoden. Det er ikke en obligatorisk optimalisering, men det kan forbedre kjøretidens løpetid. Utgangen fra kodeoptimerer blir gitt til kodegeneratoren, og til slutt blir målkoden bygget.

Forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering
Forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering

Figur 01: Faser av kompilatoren

I maskinavhengig kodeoptimalisering blir optimalisering brukt på kildekoden. Tildeling av tilstrekkelig mengde ressurser kan forbedre gjennomføringen av programmet i denne optimaliseringen.

Hva er maskinuavhengig kodeoptimalisering?

Når optimalisering er gjort på mellomkoden, kalles den maskinuavhengig kodeoptimalisering. Det er forskjellige teknikker for å oppnå maskinuavhengig kodeoptimalisering. De er beskrevet ved hjelp av følgende eksempler.

Les underliggende kodelinjer.

for (j = 0; j <10; j ++) {

b = x + 2;

a [j] = 5 * j;

}

I henhold til koden ovenfor beregnes b = x + 2 igjen og igjen i hver iterasjon. Når b er beregnet, endres det ikke. Så denne linjen kan plasseres utenfor løkken som følger.

b = x + 2;

for (j = 0; j <10; j ++)

{a [j] = 5 * j;

}

Dette kalles kodebevegelse.

Les underliggende kodelinjer.

j = 5;

hvis (j == 10) {

a = b + 20;

}

I henhold til ovennevnte kode vil "hvis blokk" aldri utføres fordi j-verdien aldri vil være lik 10. Den er allerede initialisert til verdien 5. Derfor kan denne hvis blokken fjernes. Denne teknikken er eliminering av død kode.

En annen metode er styrkereduksjon. Aritmetiske operasjoner som multiplikasjon krever mer minne, tid og CPU-sykluser. Disse dyre uttrykkene kan erstattes av billige uttrykk som b = a * 2; eller kan erstattes av tillegg, b = a + a;

Se koden nedenfor.

for (j = 1; j <= 5; j ++) {

verdi = j * 5;

}

I stedet for multiplikasjonen kan koden endres som følger.

int temp = 5;

for (j = 1; j <= 5; j ++) {

temp = temp + 5;

verdi = temp;

}

Det er mulig å evaluere uttrykkene som er konstanter ved kjøretid. Det kalles konstant folding. Det kan oppgis som b [j + 1] = c [j + 1];

I stedet kan det endres som følger.

n = j +1;

b [n] = c [n];

Det kan være løkker som følger.

for (j = 0; j <5; j ++) {

printf (“a / n”);

}

for (j = 0; j <5; j ++) {

printf (“b / n”);

}

Utskrift a og b, begge har samme antall iterasjoner. Begge kan kombineres til en for loop som følger.

for (j = 0; j <5; j ++) {

printf (“a / n”);

printf (“b / n”);

}

En annen viktig teknikk er Common sub expression eliminering. Det er å erstatte de identiske uttrykkene med en enkelt variabel for å gjøre beregningen. Se nedenfor-koden.

a = b * c + k;

d = b * c + m;

Denne koden kan konverteres som følger.

temp = b * c;

a = temp + k;

d = temp + m;

Det er ikke nødvendig å beregne b * c igjen og igjen. Den multipliserte verdien kan lagres i en variabel og gjenbrukes.

Hva er likheten mellom maskinavhengig og maskinuavhengig kodeoptimalisering?

Begge disse tilhører kodeoptimalisering

Hva er forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering?

Diff Article Midt før tabell

Maskinavhengig vs maskinuavhengig kodeoptimalisering

Maskinavhengig kodeoptimalisering brukes på objektkode. Maskinuavhengig kodeoptimalisering brukes til mellomkode.
Involvering med maskinvare
Maskinavhengig optimalisering innebærer CPU-registre og absolutte minnereferanser. Maskinuavhengig kodeoptimalisering involverer ikke CPU-registre eller absolutte minnereferanser.

Sammendrag - Maskinavhengig vs maskinuavhengig kodeoptimalisering

Kodeoptimalisering består av to optimaliseringsteknikker, nemlig maskinavhengig og maskinuavhengig kodeoptimalisering. Forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering er at maskinavhengig optimalisering blir brukt på objektkode, mens maskinuavhengig kodeoptimalisering blir brukt på mellomkode.

Last ned PDF-versjonen av maskinavhengig og maskinuavhengig kodeoptimalisering

Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til frakoblede formål som angitt i en henvisning. Last ned PDF-versjon her Forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering

Anbefalt: