Különbség A Gépfüggő és A Gépfüggetlen Kódoptimalizálás Között

Tartalomjegyzék:

Különbség A Gépfüggő és A Gépfüggetlen Kódoptimalizálás Között
Különbség A Gépfüggő és A Gépfüggetlen Kódoptimalizálás Között
Anonim

Fő különbség - Gépfüggő és Gépfüggetlen Kódoptimalizálás

A számítógépes programok a hardvereknek adott feladatsorokhoz adott utasítások. Ezeket a programokat többnyire magas szintű nyelveken írják, és a számítógép nem érti ezt a nyelvet. Ezért egy fordító segítségével átalakítják ezeket az utasításokat gépi kódokká vagy célkódokká. Több szakaszon megy keresztül a célkód összeállítása. A kódoptimalizálás az egyik ilyen. Két optimalizálási technika létezik, például: gépfüggő és gépfüggetlen kódoptimalizálás. A gépfüggő és a gépfüggetlen kódoptimalizálás közötti legfontosabb különbség az, hogy a gépfüggő optimalizálást az objektumkódra, míg a gépfüggetlen kódoptimalizálást a köztes kódra alkalmazzák.

TARTALOM

1. Áttekintés és kulcsfontosságú különbségek

2. Mi a gépfüggő kódoptimalizálás

3. Mi a gépfüggetlen kódoptimalizálás

4. A gépfüggetlen és a gépfüggetlen kódoptimalizálás közötti hasonlóság

5. Egymás melletti összehasonlítás - Gépfüggő és a géptől független kódoptimalizálás táblázatos formában

6. Összefoglalás

Mi a gépfüggő kódoptimalizálás?

A forráskód objektumkóddá vagy célkóddá történő átalakításakor a fordító több fázison megy keresztül. Először a forráskódot kapja a Lexical analizátor, amely tokeneket állít elő. Ezután a kimenetet a szintaxis analizátor kapja, amely megvizsgálja, hogy a létrehozott tokenek logikai sorrendben vannak-e. Ezt a kimenetet a szemantikai elemző kapja meg. Tegyük fel, hogy van egy kódrészlet p = q + r;

Itt p, q egész szám, de r úszó. A szemantikai elemző segítségével a c egész változót úszóvá alakítjuk. Ezért elvégzi a szemantikai elemzést. A szemantikus analizátor kimenete az Intermediate kódgenerátorhoz kerül. Visszaad egy köztes kódot, amely a kódoptimalizálóhoz kerül. A kódoptimalizálás az a folyamat, amely kiküszöböli a nem alapvető program utasításokat anélkül, hogy megváltoztatná a tényleges forráskód jelentését. Ez nem kötelező optimalizálás, de javíthatja a célkód futási idejét. A kódoptimalizáló kimenetét a kódgenerátor kapja meg, végül elkészül a célkód.

Különbség a gépfüggő és a gépfüggetlen kódoptimalizálás között
Különbség a gépfüggő és a gépfüggetlen kódoptimalizálás között

01. ábra: A fordító fázisai

A gépfüggő kódoptimalizálás során az optimalizálást a forráskódra alkalmazzák. Elegendő erőforrás elosztása javíthatja a program végrehajtását ebben az optimalizálásban.

Mi a gépfüggetlen kódoptimalizálás?

Ha az optimalizálás a köztes kódon történik, akkor azt gépfüggetlen kódoptimalizálásnak nevezzük. Különböző technikák léteznek a gépfüggetlen kódoptimalizálás elérésére. Ezeket a következő példák segítségével írjuk le.

Olvassa el a kódsorokat.

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

b = x + 2;

a [j] = 5 * j;

}

A fenti kód szerint b = x + 2-t minden egyes iterációban újra és újra kiszámolunk. A b kiszámítása után ez nem változik. Tehát ez a vonal az alábbiak szerint helyezhető el a hurkon kívül.

b = x + 2;

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

{a [j] = 5 * j;

}

Ezt hívjuk kódmozgásnak.

Olvassa el a kódsorokat.

j = 5;

ha (j == 10) {

a = b + 20;

}

A fenti kód szerint az „if block” soha nem fog végrehajtódni, mert a j értéke soha nem lesz egyenlő 10-vel. Ez már inicializálva van az 5. értékre. Ezért ez a blokk eltávolítható. Ez a technika a holt kód megszüntetése.

Egy másik módszer az erősség csökkentése. Az olyan számtani műveletek, mint a szorzás, több memóriát, időt és CPU-ciklust igényelnek. Ezeket a drága kifejezéseket olyan olcsó kifejezésekkel lehet helyettesíteni, mint b = a * 2; vagy helyettesíthető hozzáadással, b = a + a;

Lásd az alábbi kódot.

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

érték = j * 5;

}

A szorzás helyett a kód az alábbiak szerint változtatható meg.

int temp = 5;

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

temp = temp + 5;

érték = hőmérséklet;

}

Ki lehet értékelni azokat a kifejezéseket, amelyek futás közben állandóak. Állandó hajtogatásnak hívják. Megállapíthatjuk például, hogy b [j + 1] = c [j + 1];

Ehelyett a következőképpen változtatható meg.

n = j +1;

b [n] = c [n];

A következők szerint lehetnek hurkok.

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

printf („a / n”);

}

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

printf („b / n”);

}

Az a és b nyomtatásakor mindkettő azonos számú iterációt tartalmaz. Mindkettő a következőképpen kombinálható egy ciklushoz.

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

printf („a / n”);

printf („b / n”);

}

Egy másik fontos technika a Common sub expresszió elimináció. A számítás elvégzéséhez az azonos kifejezéseket egyetlen változóval kell felváltani. Olvassa el az alacsonyabb kódot.

a = b * c + k;

d = b * c + m;

Ezt a kódot az alábbiak szerint lehet átalakítani.

temp = b * c;

a = hőmérséklet + k;

d = hőmérséklet + m;

Nem szükséges újra és újra kiszámítani a b * c értéket. A megszorzott érték tárolható egy változóban, és újra felhasználható.

Mi a hasonlóság a gépfüggő és a gépfüggetlen kódoptimalizálás között?

Mindkettő a kódoptimalizáláshoz tartozik

Mi a különbség a gépfüggő és a gépfüggetlen kódoptimalizálás között?

Különböző cikk a táblázat előtt

Gépfüggő és gépfüggetlen kódoptimalizálás

Gépfüggő kódoptimalizálást alkalmaznak az objektumkódra. Gépfüggetlen kódoptimalizálást alkalmaznak a köztes kódra.
Bevonás a hardverbe
A gépfüggő optimalizálás CPU regisztereket és abszolút memória hivatkozásokat tartalmaz. A gépfüggetlen kódoptimalizálás nem tartalmaz CPU regisztereket vagy abszolút memória hivatkozásokat.

Összegzés - Gépfüggő és Gépfüggetlen Kódoptimalizálás

A kódoptimalizálás két optimalizálási technikából áll, nevezetesen gépfüggő és gépfüggetlen kódoptimalizálásból. A gépfüggő és a gépfüggetlen kódoptimalizálás közötti különbség az, hogy a gépfüggő optimalizálást az objektumkódra, míg a gépfüggetlen kódoptimalizálást a köztes kódra alkalmazzák.

Töltse le a Gépfüggő vs Gépfüggetlen Kódoptimalizálás PDF-verzióját

A cikk PDF-verzióját letöltheti, és offline célokra is használhatja, az idézési megjegyzés szerint. Kérjük, töltse le itt a PDF verziót. Különbség a gépfüggő és a gépfüggetlen kódoptimalizálás között

Ajánlott: