Razlika između optimizacije koda ovisne o stroju i neovisne o stroju

Sadržaj:

Razlika između optimizacije koda ovisne o stroju i neovisne o stroju
Razlika između optimizacije koda ovisne o stroju i neovisne o stroju

Video: Razlika između optimizacije koda ovisne o stroju i neovisne o stroju

Video: Razlika između optimizacije koda ovisne o stroju i neovisne o stroju
Video: What is the difference between structured and unstructured data? 2024, Srpanj
Anonim

Ključna razlika – optimizacija koda ovisna o stroju u odnosu na neovisnu o stroju

Računalni programi su skupovi uputa danih hardveru za obavljanje zadataka. Ti su programi uglavnom napisani na jezicima visoke razine, a računalo taj jezik ne razumije. Stoga se prevodilac koristi za pretvaranje tih instrukcija u strojni kod ili ciljni kod. Prolazi kroz nekoliko faza da bi se izgradio ciljni kod. Optimizacija koda je jedna od njih. Postoje dvije tehnike optimizacije kao što su strojno ovisna i strojno neovisna optimizacija koda. Ključna razlika između strojno ovisne i strojno neovisne optimizacije koda je u tome što se strojno ovisna optimizacija primjenjuje na objektni kod, dok se strojno neovisna optimizacija koda primjenjuje na međukod.

Što je optimizacija koda ovisna o stroju?

Prilikom pretvaranja izvornog koda u objektni kod ili ciljni kod, kompajler prolazi kroz nekoliko faza. Prvo se izvorni kod daje leksičkom analizatoru koji proizvodi tokene. Zatim se izlaz daje analizatoru sintakse koji istražuje jesu li generirani tokeni u logičkom redoslijedu. Taj se izlaz daje semantičkom analizatoru. Pretpostavimo da postoji dio koda kao p=q + r;

Ovdje su p, q cijeli brojevi, ali r je float. Korištenjem semantičkog analizatora c c integer varijabla se pretvara u float. Stoga vrši semantičku analizu. Izlaz semantičkog analizatora ide u generator srednjeg koda. Vraća međukod koji zatim ide u optimizator koda. Optimizacija koda je proces eliminacije nebitnih programskih izjava bez mijenjanja značenja stvarnog izvornog koda. To nije obvezna optimizacija, ali može poboljšati vrijeme izvođenja ciljanog koda. Izlaz optimizatora koda daje se generatoru koda i na kraju se gradi ciljni kod.

Razlika između optimizacije koda ovisne o stroju i neovisne o stroju
Razlika između optimizacije koda ovisne o stroju i neovisne o stroju
Razlika između optimizacije koda ovisne o stroju i neovisne o stroju
Razlika između optimizacije koda ovisne o stroju i neovisne o stroju

Slika 01: Faze prevodioca

U optimizaciji koda ovisnoj o stroju, optimizacija se primjenjuje na izvorni kod. Dodjeljivanje dovoljne količine resursa može poboljšati izvođenje programa u ovoj optimizaciji.

Što je strojno neovisna optimizacija koda?

Kada se optimizacija vrši na međukodu, naziva se optimizacija koda neovisna o stroju. Postoje različite tehnike za postizanje strojno neovisne optimizacije koda. Oni su opisani pomoću sljedećih primjera.

Pročitajte donje retke koda.

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

b=x+2;

a[j]=5 j;

}

Prema gornjem kodu, b=x+2 izračunava se iznova i iznova u svakoj iteraciji. Jednom kad se b izračuna, ne mijenja se. Dakle, ovaj se redak može postaviti izvan petlje na sljedeći način.

b=x+2;

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

{a[j]=5j;

}

Ovo se zove kretanje koda.

Pročitajte donje retke koda.

j=5;

if (j==10) {

a=b+20;

}

Prema gornjem kodu, 'if block' se nikada neće izvršiti jer j vrijednost nikada neće biti jednaka 10. Već je inicijaliziran na vrijednost 5. Stoga se ovaj if blok može ukloniti. Ova tehnika je uklanjanje mrtvog koda.

Druga metoda je smanjenje snage. Aritmetičke operacije poput množenja zahtijevaju više memorije, vremena i CPU ciklusa. Ovi skupi izrazi mogu se zamijeniti jeftinim izrazima poput b=a2; ili se može zamijeniti zbrajanjem, b=a + a;

Pogledajte donji kod.

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

vrijednost=j5;

}

Umjesto množenja, kod se može promijeniti na sljedeći način.

int temp=5;

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

temp=temp + 5;

vrijednost=temp;

}

Moguće je procijeniti izraze koji su konstante u vremenu izvođenja. To se zove konstantno preklapanje. Može se navesti poput b[j+1]=c [j+1];

Umjesto toga, može se promijeniti na sljedeći način.

n=j +1;

b[n]=c[n];

Mogu postojati petlje na sljedeći način.

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

printf(“a\n”);

}

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

printf(“b\n”);

}

Ispis a i b, oba imaju isti broj ponavljanja. Oba se mogu kombinirati u jednu for petlju na sljedeći način.

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

printf(“a \n”);

printf(“b\n”);

}

Još jedna važna tehnika je eliminacija zajedničkog podizraza. Radi se o zamjeni identičnih izraza s jednom varijablom za izračun. Pogledajte donji kod.

a=bc + k;

d=b c + m;

Ovaj kod se može pretvoriti na sljedeći način.

temp=bc;

a=temp + k;

d=temp + m;

Nije potrebno uvijek iznova računati bc. Umnožena vrijednost može se pohraniti u varijablu i ponovno koristiti.

Koja je sličnost između strojno ovisne i strojno neovisne optimizacije koda?

Oboje pripada optimizaciji koda

Koja je razlika između optimizacije koda ovisne o stroju i neovisne o stroju?

Optimizacija koda ovisna o stroju u odnosu na neovisnu o stroju

Optimizacija koda ovisna o stroju primjenjuje se na objektni kod. Optimizacija koda neovisna o stroju primjenjuje se na međukod.
Uključenost u hardver
Optimizacija ovisna o stroju uključuje CPU registre i apsolutne memorijske reference. Optimizacija koda neovisna o stroju ne uključuje CPU registre ili apsolutne memorijske reference.

Sažetak – Optimizacija koda ovisna o stroju u odnosu na neovisnu o stroju

Optimizacija koda sastoji se od dvije tehnike optimizacije, naime, optimizacije koda ovisne o stroju i neovisne o stroju. Razlika između strojno ovisne i strojno neovisne optimizacije koda je u tome što se strojno ovisna optimizacija primjenjuje na objektni kod, dok se strojno neovisna optimizacija koda primjenjuje na međukod.

Preuzmite PDF verziju optimizacije koda ovisne o stroju u odnosu na neovisnu o stroju

Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju. Razlika između optimizacije koda ovisne o stroju i neovisne o stroju

Preporučeni: