Obsah:
- Klíčový rozdíl - strojově závislá vs strojově nezávislá optimalizace kódu
- Co je optimalizace kódu závislého na stroji?
- Co je strojově nezávislá optimalizace kódu?
- Jaká je podobnost mezi strojově závislou a strojově nezávislou optimalizací kódu?
- Jaký je rozdíl mezi strojově závislou a strojově nezávislou optimalizací kódu?
- Shrnutí - Machine Dependent vs Machine Independent Code Optimization
Video: Rozdíl Mezi Strojově Závislou A Strojově Nezávislou Optimalizací Kódu
2024 Autor: Mildred Bawerman | [email protected]. Naposledy změněno: 2023-12-16 08:37
Klíčový rozdíl - strojově závislá vs strojově nezávislá optimalizace kódu
Počítačové programy jsou soubory pokynů k hardwaru k provádění úkolů. Tyto programy jsou většinou psány v jazycích vyšší úrovně a počítač tomuto jazyku nerozumí. Proto se kompilátor používá k převodu těchto pokynů do strojového kódu nebo cílového kódu. Prochází několika fázemi k vytvoření cílového kódu. Jednou z nich je optimalizace kódu. Existují dvě optimalizační techniky, jako je strojově závislá a strojově nezávislá optimalizace kódu. Klíčovým rozdílem mezi strojově závislou a strojově nezávislou optimalizací kódu je to, že strojově závislá optimalizace se aplikuje na objektový kód, zatímco strojově nezávislá kódová optimalizace se aplikuje na mezilehlý kód.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je optimalizace kódu závislá na stroji
3. Co je optimalizace kódu nezávislá na stroji
4. Podobnosti mezi strojově závislou a strojově nezávislou optimalizací kódu
5. Porovnání vedle sebe - strojově závislá vs strojově nezávislá optimalizace kódu v tabulkové formě
6. Shrnutí
Co je optimalizace kódu závislého na stroji?
Při převodu zdrojového kódu na objektový nebo cílový kód prochází kompilátor několika fázemi. Nejprve je zdrojový kód předán Lexikálnímu analyzátoru, který produkuje tokeny. Potom je výstup předán analyzátoru syntaxe, který zkoumá, zda jsou generované tokeny v logickém pořadí. Tento výstup je předán sémantickému analyzátoru. Předpokládejme, že existuje část kódu jako p = q + r;
Zde jsou p, q celá čísla, ale r je plovák. Pomocí sémantického analyzátoru se celočíselná proměnná c převede na float. Proto provádí sémantickou analýzu. Výstup sémantického analyzátoru jde do generátoru mezilehlého kódu. Vrátí mezilehlý kód, který poté přejde do optimalizátoru kódu. Optimalizace kódu je proces eliminace nepodstatných programových příkazů beze změny významu skutečného zdrojového kódu. Není to povinná optimalizace, ale může zlepšit provozní dobu cílového kódu. Výstup optimalizátoru kódu je předán generátoru kódu a nakonec je vytvořen cílový kód.
Obrázek 01: Fáze kompilátoru
Při optimalizaci strojově závislého kódu se optimalizace použije na zdrojový kód. Přidělení dostatečného množství zdrojů může zlepšit provádění programu v této optimalizaci.
Co je strojově nezávislá optimalizace kódu?
Když se optimalizace provádí na zprostředkujícím kódu, nazývá se to optimalizace kódu nezávislá na stroji. Existují různé techniky pro dosažení optimalizace kódu nezávislého na stroji. Jsou popsány pomocí následujících příkladů.
Přečtěte si níže uvedené řádky kódu.
pro (j = 0; j <10; j ++) {
b = x + 2;
a [j] = 5 * j;
}
Podle výše uvedeného kódu se b = x + 2 počítá znovu a znovu v každé iteraci. Jakmile je vypočítáno b, nemění se. Tento řádek lze tedy umístit mimo smyčku následujícím způsobem.
b = x + 2;
pro (j = 0; j <10; j ++)
{a [j] = 5 * j;
}
Tomu se říká pohyb kódu.
Přečtěte si níže uvedené řádky kódu.
j = 5;
if (j == 10) {
a = b + 20;
}
Podle výše uvedeného kódu se 'if block' nikdy nespustí, protože j hodnota se nikdy nebude rovnat 10. Je již inicializována na hodnotu 5. Proto je možné tento if block odstranit. Tato technika je odstranění mrtvého kódu.
Další metodou je redukce pevnosti. Aritmetické operace, jako je násobení, vyžadují více paměti, času a cyklů CPU. Tyto drahé výrazy lze nahradit levnými výrazy jako b = a * 2; nebo mohou být nahrazeny sčítáním, b = a + a;
Viz níže uvedený kód.
pro (j = 1; j <= 5; j ++) {
hodnota = j * 5;
}
Místo násobení lze kód změnit následujícím způsobem.
int temp = 5;
pro (j = 1; j <= 5; j ++) {
teplota = teplota + 5;
hodnota = teplota;
}
Je možné vyhodnotit výrazy, které jsou konstantami za běhu. Říká se tomu konstantní skládání. Lze uvést například b [j + 1] = c [j + 1];
Místo toho jej lze změnit následujícím způsobem.
n = j +1;
b [n] = c [n];
Mohou existovat smyčky následovně.
pro (j = 0; j <5; j ++) {
printf („a / n“);
}
pro (j = 0; j <5; j ++) {
printf („b / n“);
}
Tisk aab mají oba stejný počet iterací. Oba lze kombinovat do jedné smyčky for následujícím způsobem.
pro (j = 0; j <5; j ++) {
printf („a / n“);
printf („b / n“);
}
Další důležitou technikou je eliminace společného podvýrazu. Jedná se o nahrazení stejných výrazů jedinou proměnnou pro provedení výpočtu. Viz níže uvedený kód.
a = b * c + k;
d = b * c + m;
Tento kód lze převést následujícím způsobem.
teplota = b * c;
a = teplota + k;
d = teplota + m;
Není nutné znovu a znovu počítat b * c. Násobená hodnota může být uložena v proměnné a znovu použita.
Jaká je podobnost mezi strojově závislou a strojově nezávislou optimalizací kódu?
Oba tyto patří do optimalizace kódu
Jaký je rozdíl mezi strojově závislou a strojově nezávislou optimalizací kódu?
Rozdílný článek uprostřed před tabulkou
Strojově závislá vs strojově nezávislá optimalizace kódu |
|
Na objektový kód se použije optimalizace kódu závislá na stroji. | Optimalizace kódu nezávislá na stroji se použije na přechodný kód. |
Zapojení s hardwarem | |
Optimalizace závislá na stroji zahrnuje registry CPU a absolutní odkazy na paměť. | Optimalizace kódu nezávislá na stroji nezahrnuje registry CPU ani absolutní odkazy na paměť. |
Shrnutí - Machine Dependent vs Machine Independent Code Optimization
Optimalizace kódu se skládá ze dvou optimalizačních technik, a to optimalizace kódu závislá na stroji a nezávislá na stroji. Rozdíl mezi strojově závislou a strojově nezávislou optimalizací kódu je v tom, že strojově závislá optimalizace se aplikuje na objektový kód, zatímco strojově nezávislá optimalizace kódu se aplikuje na mezilehlý kód.
Stáhněte si PDF verzi Machine Dependent vs Machine Independent Code Optimization
Můžete si stáhnout verzi tohoto článku ve formátu PDF a použít jej pro offline účely podle citace. Stáhněte si zde verzi PDF Rozdíl mezi optimalizací kódu závislou na stroji a nezávislou na stroji
Doporučená:
Rozdíl Mezi Závislou A Produktivní Populací
Klíčovým rozdílem mezi závislou a produktivní populací je, že závislá populace nepracuje nebo nepřispívá k hospodářskému rozvoji EU
Rozdíl Mezi Těkavou A Energeticky Nezávislou Pamětí
Volatile vs Nonvolatile Memory & Volatilní a energeticky nezávislé jsou klasifikace v paměti počítače. Volatile memory je typ paměti počítače, který re
Rozdíl Mezi POS A čtečkou čárových Kódů
POS vs čtečka čárových kódů POS i čtečky čárových kódů se používají tam, kde transakce zahrnuje supermarkety, maloobchodní prodejny nebo restaurace. POS (prodejní místo)
Rozdíl Mezi Nezávislou Osobou A Smlouvou
Na volné noze vs Smlouva Nezávislý pracovník a smlouva, i když se zdají být stejné, mají mezi sebou určitý rozdíl. Pokud jde o jejich vlastní, existují určité změny
Rozdíl Mezi Klíčovým Rozdílem Mezi Kovovými A Nekovovými Minerály
Klíčový rozdíl - kovové vs. nekovové minerály Minerál je přirozeně se vyskytující pevná a anorganická složka s určitým chemickým vzorcem a