Rozdiel medzi optimalizáciou kódu závislou od počítača a optimalizáciou kódu nezávislou od zariadenia

Obsah:

Rozdiel medzi optimalizáciou kódu závislou od počítača a optimalizáciou kódu nezávislou od zariadenia
Rozdiel medzi optimalizáciou kódu závislou od počítača a optimalizáciou kódu nezávislou od zariadenia

Video: Rozdiel medzi optimalizáciou kódu závislou od počítača a optimalizáciou kódu nezávislou od zariadenia

Video: Rozdiel medzi optimalizáciou kódu závislou od počítača a optimalizáciou kódu nezávislou od zariadenia
Video: CS50 2013 - Week 2 2024, Júl
Anonim

Kľúčový rozdiel – Optimalizácia kódu závislá od stroja a od stroja nezávislá

Počítačové programy sú sady inštrukcií zadávaných hardvéru na vykonávanie úloh. Tieto programy sú väčšinou napísané v jazykoch vysokej úrovne a počítač tomuto jazyku nerozumie. Preto sa na konverziu týchto inštrukcií na strojový kód alebo cieľový kód používa kompilátor. Vytvorenie cieľového kódu prechádza niekoľkými fázami. Optimalizácia kódu je jedným z nich. Existujú dve techniky optimalizácie, ako je optimalizácia kódu závislá od stroja a optimalizácia kódu nezávislá na stroji. Kľúčový rozdiel medzi optimalizáciou kódu závislou od stroja a optimalizáciou kódu nezávislou od stroja je v tom, že optimalizácia závislá od stroja sa aplikuje na objektový kód, zatiaľ čo optimalizácia kódu nezávislá od stroja sa aplikuje na prechodný kód.

Čo je strojová optimalizácia kódu?

Pri konverzii zdrojového kódu na objektový alebo cieľový kód kompilátor prechádza niekoľkými fázami. Najprv sa zdrojový kód odovzdá Lexikálnemu analyzátoru, ktorý vytvorí tokeny. Potom sa výstup odovzdá syntaktickému analyzátoru, ktorý skúma, či sú vygenerované tokeny v logickom poradí. Tento výstup sa odovzdá sémantickému analyzátoru. Predpokladajme, že existuje časť kódu ako p=q + r;

Tu p, q sú celé čísla, ale r je pohyblivá čiara. Pomocou sémantického analyzátora sa premenná c integer skonvertuje na float. Preto vykonáva sémantickú analýzu. Výstup sémantického analyzátora ide do medziľahlého generátora kódu. Vracia prechodný kód, ktorý potom ide do optimalizátora kódu. Optimalizácia kódu je proces eliminácie nepodstatných programových príkazov bez zmeny významu skutočného zdrojového kódu. Nie je to povinná optimalizácia, ale môže zlepšiť čas chodu cieľového kódu. Výstup z optimalizátora kódu sa odovzdá generátoru kódu a nakoniec sa vytvorí cieľový kód.

Rozdiel medzi optimalizáciou kódu závislou od stroja a nezávislou od stroja
Rozdiel medzi optimalizáciou kódu závislou od stroja a nezávislou od stroja
Rozdiel medzi optimalizáciou kódu závislou od stroja a nezávislou od stroja
Rozdiel medzi optimalizáciou kódu závislou od stroja a nezávislou od stroja

Obrázok 01: Fázy kompilátora

Pri strojovo závislej optimalizácii kódu sa optimalizácia aplikuje na zdrojový kód. Pridelenie dostatočného množstva zdrojov môže zlepšiť vykonávanie programu pri tejto optimalizácii.

Čo je strojovo nezávislá optimalizácia kódu?

Keď sa optimalizácia vykonáva na medzikóde, nazýva sa to strojovo nezávislá optimalizácia kódu. Existujú rôzne techniky na dosiahnutie strojovo nezávislej optimalizácie kódu. Sú opísané pomocou nasledujúcich príkladov.

Prečítajte si nižšie uvedené riadky kódu.

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

b=x+2;

a[j]=5 j;

}

Podľa vyššie uvedeného kódu sa b=x+2 počíta znova a znova v každej iterácii. Po vypočítaní b sa nemení. Takže tento riadok môže byť umiestnený mimo slučky nasledovne.

b=x+2;

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

{a[j]=5j;

}

Toto sa nazýva pohyb kódu.

Prečítajte si nižšie uvedené riadky kódu.

j=5;

if (j==10) {

a=b+20;

}

Podľa vyššie uvedeného kódu sa „if block“nikdy nespustí, pretože hodnota j sa nikdy nebude rovnať 10. Je už inicializovaná na hodnotu 5. Preto je možné tento blok odstrániť. Táto technika je eliminácia mŕtveho kódu.

Ďalšou metódou je redukcia sily. Aritmetické operácie ako násobenie vyžadujú viac pamäte, času a cyklov CPU. Tieto drahé výrazy môžu byť nahradené lacnými výrazmi ako b=a2; alebo ho možno nahradiť pridaním, b=a + a;

Odkaz na kód uvedený nižšie.

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

value=j5;

}

Namiesto násobenia je možné kód zmeniť nasledovne.

int temp=5;

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

temp=teplota + 5;

value=temp;

}

Je možné vyhodnotiť výrazy, ktoré sú konštantné za behu. Hovorí sa tomu neustále skladanie. Môže byť uvedené ako b[j+1]=c [j+1];

Namiesto toho sa dá zmeniť takto.

n=j +1;

b[n]=c[n];

Môžu existovať nasledujúce slučky.

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

printf(“a\n”);

}

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

printf(“b\n”);

}

Tlač a a b, obe majú rovnaký počet iterácií. Obidve možno skombinovať do jednej slučky for nasledovne.

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

printf(“a \n”);

printf(“b\n”);

}

Ďalšou dôležitou technikou je eliminácia spoločného podvýrazu. Na vykonanie výpočtu je potrebné nahradiť identické výrazy jednou premennou. Pozrite si kód uvedený nižšie.

a=bc + k;

d=b c + m;

Tento kód je možné previesť nasledovne.

temp=bc;

a=teplota + k;

d=teplota + m;

Nie je potrebné počítať bc znova a znova. Vynásobenú hodnotu možno uložiť do premennej a znova použiť.

Aká je podobnosť medzi strojovo závislou a strojovo nezávislou optimalizáciou kódu?

Obaja patria do optimalizácie kódu

Aký je rozdiel medzi optimalizáciou kódu závislou od stroja a optimalizáciou kódu nezávislou od stroja?

Optimalizácia kódu závislá od stroja verzus od stroja

Na objektový kód sa aplikuje optimalizácia kódu závislá od stroja. Na medzikód sa používa optimalizácia kódu nezávislá od stroja.
Zapojenie hardvéru
Optimalizácia závislá od stroja zahŕňa registre CPU a absolútne referencie pamäte. Optimalizácia kódu nezávislá od stroja nezahŕňa registre CPU ani absolútne odkazy na pamäť.

Súhrn – Optimalizácia kódu závislá od stroja verzus od stroja nezávislá

Optimalizácia kódu pozostáva z dvoch optimalizačných techník, konkrétne optimalizácie kódu závislej od stroja a nezávislej od stroja. Rozdiel medzi optimalizáciou kódu závislou od stroja a optimalizáciou kódu nezávislou od stroja je v tom, že optimalizácia závislá od stroja sa aplikuje na objektový kód, zatiaľ čo optimalizácia kódu nezávislá od stroja sa aplikuje na prechodný kód.

Stiahnite si verziu PDF Optimalizácia kódu závislá od počítača vs. Optimalizácia kódu nezávislá od počítača

Verziu tohto článku si môžete stiahnuť vo formáte PDF a použiť ju na offline účely podľa citácie. Stiahnite si PDF verziu tu Rozdiel medzi optimalizáciou kódu závislou od stroja a optimalizáciou kódu nezávislou od stroja

Odporúča: