Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo

Turinys:

Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo
Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo

Video: Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo

Video: Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo
Video: Source of Optimisation | Principal | Compiler Design | Lec- 50 | Bhanu Priya 2024, Lapkritis
Anonim

Pagrindinis skirtumas – nuo mašinos priklausomas ir nuo mašinos nepriklausomas kodo optimizavimas

Kompiuterio programos yra instrukcijų rinkiniai, duodami aparatūrai užduotims atlikti. Šios programos dažniausiai parašytos aukšto lygio kalbomis, o kompiuteris tos kalbos nesupranta. Todėl kompiliatorius naudojamas tas instrukcijas konvertuoti į mašininį kodą arba tikslinį kodą. Kurdamas tikslinį kodą, jis pereina kelis etapus. Kodo optimizavimas yra vienas iš jų. Yra du optimizavimo būdai, pavyzdžiui, nuo mašinos priklausomas ir nuo mašinos nepriklausomas kodo optimizavimas. Pagrindinis skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo yra tas, kad nuo mašinos priklausomas optimizavimas taikomas objekto kodui, o nuo mašinos nepriklausomas kodo optimizavimas taikomas tarpiniam kodui.

Kas yra nuo mašinos priklausomo kodo optimizavimas?

Konvertuojant š altinio kodą į objekto kodą arba tikslinį kodą, kompiliatorius pereina keletą etapų. Pirma, š altinio kodas suteikiamas Lexical analizatoriui, kuris gamina žetonus. Tada išvestis perduodama sintaksės analizatoriui, kuris tiria, ar sugeneruoti žetonai yra logiška tvarka. Ta išvestis perduodama semantiniam analizatoriui. Tarkime, kad yra kodo dalis p=q + r;

Čia p, q yra sveikieji skaičiai, bet r yra slankioji vertė. Naudojant semantinį analizatorių, c integer kintamasis paverčiamas plūduriuojančiu. Todėl ji atlieka semantinę analizę. Semantinio analizatoriaus išvestis patenka į tarpinį kodų generatorių. Jis grąžina tarpinį kodą, kuris eina į kodo optimizavimo priemonę. Kodo optimizavimas yra neesminių programos teiginių pašalinimo procesas, nekeičiant tikrojo š altinio kodo reikšmės. Tai nėra privalomas optimizavimas, tačiau jis gali pagerinti tikslinio kodo veikimo laiką. Kodo optimizavimo priemonės išvestis perduodama kodo generatoriui ir galiausiai sukuriamas tikslinis kodas.

Skirtumas tarp nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo
Skirtumas tarp nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo
Skirtumas tarp nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo
Skirtumas tarp nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo

01 pav.: Kompiliatoriaus fazės

Atliekant nuo mašinos priklausančio kodo optimizavimą, optimizavimas taikomas š altinio kodui. Paskyrus pakankamai išteklių, galima pagerinti programos vykdymą atliekant šį optimizavimą.

Kas yra mašinos nepriklausomas kodo optimizavimas?

Kai optimizuojamas tarpinis kodas, jis vadinamas nepriklausomu nuo mašinos kodo optimizavimu. Yra įvairių metodų, kaip pasiekti nepriklausomą nuo mašinos kodo optimizavimą. Jie aprašyti naudojant šiuos pavyzdžius.

Perskaitykite toliau pateiktas kodo eilutes.

už (j=0; j<10; j ++) {

b=x+2;

a[j]=5 j;

}

Pagal aukščiau pateiktą kodą b=x+2 apskaičiuojamas vėl ir vėl kiekvienoje iteracijoje. Kai b apskaičiuojamas, jis nesikeičia. Taigi šią eilutę galima įdėti už kilpos ribų taip.

b=x+2;

už (j=0; j< 10; j++)

{a[j]=5j;

}

Tai vadinama kodo judėjimu.

Perskaitykite toliau pateiktas kodo eilutes.

j=5;

if (j==10) {

a=b+20;

}

Pagal aukščiau pateiktą kodą „if block“niekada nebus vykdomas, nes j reikšmė niekada nebus lygi 10. Jis jau inicijuotas į 5 reikšmę. Todėl šį if bloką galima pašalinti. Ši technika yra mirusio kodo pašalinimas.

Kitas metodas yra jėgos mažinimas. Aritmetinėms operacijoms, tokioms kaip daugyba, reikia daugiau atminties, laiko ir procesoriaus ciklų. Šios brangios išraiškos gali būti pakeistos pigiomis išraiškomis, tokiomis kaip b=a2; arba gali būti pakeistas papildymu, b=a + a;

Žiūrėkite toliau pateiktą kodą.

už (j=1; j <=5; j ++) {

reikšmė=j5;

}

Vietoj daugybos kodą galima keisti taip.

int temp=5;

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

temp=temp + 5;

vertė=temp;

}

Galima įvertinti išraiškas, kurios vykdymo metu yra konstantos. Tai vadinama nuolatiniu lankstymu. Galima nurodyti, kaip b[j+1]=c [j+1];

Vietoj to, jį galima pakeisti taip.

n=j +1;

b[n]=c[n];

Gali būti tokios kilpos.

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

printf(“a\n”);

}

už (j=0; j <5; j++) {

printf(“b\n”);

}

Spausdinant a ir b, abu turi tiek pat iteracijų. Abu gali būti sujungti į vieną, kaip nurodyta toliau.

už (j=0; j <5; j++) {

printf("a \n");

printf(“b\n”);

}

Kitas svarbus metodas yra bendrosios posakių pašalinimas. Norint atlikti skaičiavimą, reikia pakeisti identiškas išraiškas vienu kintamuoju. Peržiūrėkite toliau pateiktą kodą.

a=bc + k;

d=b c + m;

Šį kodą galima konvertuoti taip.

temp=bc;

a=temp + k;

d=temp + m;

Nereikia vėl ir vėl skaičiuoti bc. Padaugintą reikšmę galima išsaugoti kintamajame ir naudoti pakartotinai.

Koks yra nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo panašumas?

Abu jie priklauso kodo optimizavimui

Kuo skiriasi nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo?

Priklausomas nuo mašinos ir nuo mašinos nepriklausomas kodo optimizavimas

Objekto kodui taikomas nuo mašinos priklausomo kodo optimizavimas. Nuo mašinos nepriklausomas kodo optimizavimas taikomas tarpiniam kodui.
Įsitraukimas į aparatinę įrangą
Nuo mašinos priklausomas optimizavimas apima procesoriaus registrus ir absoliučios atminties nuorodas. Mašinos nepriklausomas kodo optimizavimas neapima procesoriaus registrų ar absoliučios atminties nuorodų.

Santrauka – nuo mašinos priklausomas ir nuo mašinos nepriklausomas kodo optimizavimas

Kodo optimizavimas susideda iš dviejų optimizavimo būdų, būtent, nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo. Skirtumas tarp mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo yra tas, kad nuo mašinos priklausomas optimizavimas taikomas objekto kodui, o nuo mašinos nepriklausomas kodo optimizavimas taikomas tarpiniam kodui.

Atsisiųskite PDF versiją, skirtą Machine Dependent vs Machine Independent Code Optimization

Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia. Skirtumas tarp nuo mašinos priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo

Rekomenduojamas: