Innholdsfortegnelse:
- Hovedforskjell - Maskinavhengig vs Maskinuavhengig kodeoptimalisering
- Hva er maskinavhengig kodeoptimalisering?
- Hva er maskinuavhengig kodeoptimalisering?
- Hva er likheten mellom maskinavhengig og maskinuavhengig kodeoptimalisering?
- Hva er forskjellen mellom maskinavhengig og maskinuavhengig kodeoptimalisering?
- Sammendrag - Maskinavhengig vs maskinuavhengig kodeoptimalisering
Video: Forskjellen Mellom Maskinavhengig Og Maskinuavhengig Kodeoptimalisering
2024 Forfatter: Mildred Bawerman | [email protected]. Sist endret: 2023-12-16 08:41
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.
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:
Forskjellen Mellom Symmetriske Og Asymmetriske Toppmolekyler
Hovedforskjellen mellom symmetriske og asymmetriske toppmolekyler er at symmetriske toppmolekyler har en riktig rotasjonsakse og to treghetsmomenter
Forskjellen Mellom Transgene Og Knockout Mus
Hovedforskjellen mellom transgene mus og knockout-mus er at transgene mus har fremmede gener satt inn i genomet mens knockout-mus har en funksjon
Forskjellen Mellom Cisgenesis Og Intragenesis
Hovedforskjellen mellom cisgenese og intragenese er at i cisgenesis introduseres gener uten å gjøre noen endring i DNA-sekvensen, og ge
Forskjellen Mellom Nøkkelforskjellen Mellom Metalliske Og Ikke-metalliske Mineraler
Hovedforskjell - Metallisk vs Ikke-metalliske mineraler Et mineral er en naturlig forekommende fast og uorganisk bestanddel med en bestemt kjemisk formel
Forskjellen Mellom Gammel Engelsk Og Mellom Engelsk Og Moderne Engelsk
Old English vs Middle English vs Modern English Old English, Middle English og Modern English er klassifiseringen av engelsk språk, og de