Skirtumas tarp nuo mašinų priklausomo ir nuo mašinų nepriklausomo kodo optimizavimas

Pagrindinis skirtumas - mašina Priklausomas vs Mašina Nepriklausomas kodo optimizavimas
 

Kompiuterinės programos yra instrukcijų rinkiniai, skirti aparatinei įrangai užduotims atlikti. Šios programos dažniausiai rašomos aukšto lygio kalbomis, o kompiuteris tos kalbos nesupranta. Todėl kompiliatorius naudojamas konvertuoti šias instrukcijas į mašinos kodą arba tikslinį kodą. Tikslo kodas sukuriamas keliais etapais. 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 nuo kompiuterio priklausomo ir nuo mašinos nepriklausomo kodo optimizavimas yra tas, kad Objekto kodui taikomas mašinų priklausomas optimizavimas, o tarpiniam kodui - nuo mašinų nepriklausomas kodo optimizavimas.

TURINYS

1. Apžvalga ir svarbiausias skirtumas
2. Kas yra nuo mašinų priklausomas kodo optimizavimas
3. Kas yra nuo kompiuterio nepriklausomas kodo optimizavimas
4. Priklausomybės nuo mašinų ir nuo mašinų nepriklausomo kodo optimizavimas
5. Šalutinis palyginimas - priklausomas nuo mašinos ir nuo mašinos nepriklausomas kodo optimizavimas lentelės forma
6. Santrauka

Kas yra nuo mašinų priklausomas kodo optimizavimas?

Konvertuodamas šaltinio kodą į objekto kodą arba taikinio kodą, kompiliatorius pereina kelias fazes. Pirmiausia šaltinis yra suteikiamas „Lexical“ analizatoriui, kuris gamina žetonus. Tada išėjimas perduodamas sintaksės analizatoriui, kuris tiria, ar generuojami žetonai yra logine tvarka. Šis išėjimas pateikiamas semantiniam analizatoriui. Tarkime, kad yra kodo gabalas, kaip p = q + r;

Čia p, q yra sveikieji skaičiai, bet r yra kintama. Naudojant semantinį analizatorių, c sveikojo skaičiaus kintamasis konvertuojamas į kintamąjį. Todėl ji atlieka semantinę analizę. Semantinio analizatoriaus išėjimas eina į tarpinį kodų generatorių. Jis grąžina tarpinį kodą, kuris eina į kodo optimizavimo įrankį. Kodo optimizavimas yra neesminių programos teiginių pašalinimo procesas, nekeičiant tikrojo 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 kodų generatoriui, o galiausiai sukuriamas tikslinis kodas.

01 pav. Kompiliatoriaus fazės

Optimizuojant mašiną priklausomą kodą, šaltinio kodas yra optimizuojamas. Paskirsčius pakankamą išteklių kiekį, galima patobulinti programos vykdymą.

Kas yra mašinų nepriklausomas kodo optimizavimas?

Kai tarpinio kodo optimizavimas yra vadinamas mašina nepriklausomu kodo optimizavimu. Yra skirtingi būdai, kaip pasiekti nuo mašinų nepriklausomą kodo optimizavimą. Jie aprašyti naudojant šiuos pavyzdžius.

Perskaitykite žemiau esančias 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ą liniją galima išdėstyti už kilpos ribų taip.

b = x + 2;

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

a [j] = 5 * j;

Tai vadinama kodo judėjimu.

Perskaitykite žemiau esančias kodo eilutes.

j = 5;

if (j == 10)

a = b + 20;

Pagal aukščiau pateiktą kodą 'if block' niekada nevykdys, nes j vertė niekada nebus lygi 10. Jis jau yra inicializuotas iki 5 vertės. Todėl šį bloką galima pašalinti. Ši technika yra negyvo kodo pašalinimas.

Kitas metodas yra stiprumo mažinimas. Aritmetinės operacijos, tokios kaip daugyba, reikalauja daugiau atminties, laiko ir procesoriaus ciklų. Šios brangios išraiškos gali būti pakeistos pigiomis išraiškomis, tokiomis kaip b = a * 2; arba gali būti pakeistas pridedant, b = a + a;

Nurodykite žemiau esantį kodą.

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

reikšmė = j * 5;

Vietoj daugybos kodą galima pakeisti taip.

int temp = 5;

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

temp = temp + 5;

vertė = temp;

Galima įvertinti išraiškas, kurios yra konstantos vykdant laiką. Tai vadinama nuolatinis lankstymas. Galima teigti, kad b [j + 1] = c [j + 1];

Vietoj to jį galima pakeisti taip.

n = j +1;

b [n] = c [n];

Kilpos gali būti tokios.

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

printf („a \ n“);

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

printf („b \ n“);

Spausdinant a ir b, abu kartojasi vienodai. Juos abu galima sujungti į vieną, kad būtų sukurta kilpa, taip.

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

printf („a \ n“);

printf („b \ n“);

Kita svarbi technika yra Bendrojo posakio eliminacija. Skaičiavimui reikia pakeisti tas pačias išraiškas vienu kintamuoju. Žr. Silfono kodą.

a = b * c + k;

d = b * c + m;

Šį kodą galima konvertuoti taip.

temp = b * c;

a = temp + k;

d = temp + m;

Nebūtina vėl ir vėl skaičiuoti b * c. Padaugintą vertę galima laikyti kintamajame ir naudoti pakartotinai.

Koks yra priklausomybės nuo mašinų ir nuo mašinų nepriklausomas kodo optimizavimas?

  • Abu jie priklauso kodo optimizavimui

Kuo skiriasi priklausomas nuo mašinų ir nuo mašinų nepriklausomas kodo optimizavimas?

Nuo mašinos priklausomas ir nuo mašinos nepriklausomas kodo optimizavimas 

Objekto kodui taikomas nuo mašinos priklausomas kodo optimizavimas. Tarpiniam kodui taikomas nuo mašinų nepriklausomas kodo optimizavimas.
Dalyvavimas techninėje įrangoje
Nuo mašinų priklausantis optimizavimas apima procesoriaus registrus ir absoliučios atminties nuorodas.  Nuo mašinų nepriklausomas kodo optimizavimas neapima CPU registrų ar absoliučios atminties nuorodų.

Santrauka - mašina Priklausomas nuo mašinos nepriklausomas kodo optimizavimas 

Kodo optimizavimas susideda iš dviejų optimizavimo būdų, būtent, nuo mašinų priklausomo ir nuo mašinos nepriklausomo kodo optimizavimo. Skirtumas tarp nuo mašinų priklausomo ir nuo mašinų nepriklausomo kodo optimizavimo yra tas, kad objekto kodams taikoma mašina priklausoma optimizacija, tuo tarpu tarpiniam kodui taikoma mašina nepriklausoma kodo optimizacija..

Atsisiųskite nuo mašinų priklausomo ir nuo kompiuterio nepriklausomo kodo optimizavimo PDF versiją

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

Nuoroda:

1. „Kompiliatoriaus dizainas | Kodo optimizavimas. “ „GeeksforGeeks“. Galima rasti čia
2.Taškas, vadovėliai. „Kompiliatoriaus dizainas - kodo optimizavimas“. Www.tutorialspoint.com, „Tutorials Point“, 2017 m. Rugpjūčio 15 d. Galima rasti čia  
3.Estudies4you. „JNTUH CSE studijų medžiaga“. Skirtumas tarp nuo mašinų priklausomo ir nepriklausomo kodo optimizavimo. Galima rasti čia  

Vaizdo mandagumas:

1. „Kompiliatorius“ Aš, Surachitas, (CC BY-SA 3.0) per „Commons Wikimedia“