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

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

A számítógépes programok a hardvereknek a feladatok elvégzéséhez adott utasítások. Ezeket a programokat többnyire magas szintű nyelven írják, és a számítógép nem érti ezt a nyelvet. Ezért egy fordítót használnak ezeknek az utasításoknak a konvertálására gépi kódra vagy célkódra. A célkód létrehozása több szakaszon megy keresztül. A kód optimalizálása az egyik. Két optimalizálási módszer létezik, például a géptől függő és a géptől független kód optimalizálás. Az kulcs különbség a gépfüggő és a géptől független kódoptimalizálás között az, hogy a gépfüggő optimalizálást alkalmaznak az objektumkódra, míg a gépfüggetlen kód optimalizálást az intermedier kódra.

TARTALOMJEGYZÉK

1. Áttekintés és a legfontosabb különbség
2. Mi a gépfüggő kódoptimalizálás
3. Mi a gépfüggetlen kódoptimalizálás
4. hasonlóságok a gépfüggő és a géptől független kódoptimalizálás között
5. Összegzés összehasonlítása - Gépfüggő és gépfüggetlen kód optimalizálás táblázatos formában
6. Összegzés

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

Amikor a forráskódot objektumkódra vagy célkódra konvertálja, a fordító több fázison megy keresztül. Először a forráskódot a Lexical analizátornak kapják, amely tokeneket állít elő. Ezután a kimenetet a szintaxis-elemzőnek kapjuk, amely megvizsgálja, hogy a generált tokenek logikus sorrendben vannak-e. Ezt a kimenetet a szemantikai analizátornak adják. Tegyük fel, hogy van egy darab kód, mint p = q + r;

Itt p, q egész szám, de r úszó. A szemantikai analizátor segítségével a c egész számváltozót átalakítják úszóvá. Ezért elvégzi a szemantikai elemzést. A szemantikus analizátor kimenete a közbenső kódgenerátorra megy. Egy közbenső kódot ad vissza, amelyet a kódoptimalizálóhoz küld. A kódoptimalizálás a nem alapvető programnyilatkozatok kiküszöbölése a tényleges forráskód jelentésének megváltoztatása nélkül. Ez nem kötelező optimalizálás, de javíthatja a célkód futási idejét. A kódoptimalizáló kimenete a kódgenerátornak adódik, és végül a célkód épül.

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

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

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

Amikor a közbenső kód optimalizálása megtörténik, azt géptől független kódoptimalizációnak nevezzük. Különböző technikák léteznek a géptől független kódoptimalizálás eléréséhez. A következő példákkal írják le őket.

Olvassa el az alábbiakban szereplő kódsorokat.

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

b = x + 2;

a [j] = 5 * j;

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

b = x + 2;

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

a [j] = 5 * j;

Ezt hívják kódmozgásnak.

Olvassa el az alábbiakban szereplő kódsorokat.

J = 5;

if (j == 10)

a = b + 20;

A fenti kód szerint az 'if block' soha nem fog végrehajtódni, mert j értéke soha nem lesz 10-nél. Ez már inicializálva van az 5-ös értékre. Ezért ez a blokk eltávolítható. Ez a technika holt kód kiküszöbölése.

Egy másik módszer az erő csökkentése. A számtani műveletek, például a szorzás, több memóriát, időt és CPU-ciklust igényelnek. Ezek a drága kifejezések helyettesíthetők olcsó kifejezésekkel, például b = a * 2; vagy helyettesíthető hozzáadással, b = a + a;

Lásd az alábbi kódot.

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

érték = j * 5;

A szorzás helyett a kód a következőképpen változtatható meg.

int temp = 5;

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

temp = temp + 5;

érték = temp;

Ki lehet értékelni azokat a kifejezéseket, amelyek futó időben állandóak. Ez az úgynevezett állandó hajtogatás. Megállapíthatók például b [j + 1] = c [j + 1];

Ehelyett az alábbiak szerint változtatható meg.

n = j +1;

b [n] = c [n];

Hurkok lehetnek az alábbiak szerint.

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

printf ( „\ n”);

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

printf ( „b \ n”);

Az a és b nyomtatáskor mindkettő azonos számú iterációval rendelkezik. Mindkettőt az alábbiak szerint kombinálhatjuk hurokként.

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

printf (“a \ n”);

printf ( „b \ n”);

Egy másik fontos technika a Közös al-kifejezés elimináció. A számítás elvégzéséhez az azonos kifejezéseket egyetlen változóval kell felváltani. Lásd az alábbiakódot.

a = b * c + k;

d = b * c + m;

Ez a kód az alábbiak szerint konvertálható.

temp = b * c;

a = temp + k;

d = temp + m;

Nem kell újra és újra kiszámítani a b * c értéket. A szorzott értéket egy változóban tárolhatjuk és újra felhasználhatjuk.

Milyen a hasonlóság a géptől függő és a géptől független kódoptimalizálás között??

  • Mindkettő a kódoptimalizáláshoz tartozik

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

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

Gépfüggő kódoptimalizálás történik az objektumkódra. Gépfüggetlen kódoptimalizálás történik a közbenső kódhoz.
Bevonás a hardverbe
Géptől függő optimalizálás magában foglalja a CPU regisztereket és az abszolút memória hivatkozásokat.  A gépfüggetlen kódoptimalizálás nem foglalja magában a CPU regisztereket vagy az abszolút memória hivatkozásokat.

Összegzés - gép Függő és gépfüggetlen kód optimalizálás 

A kód optimalizálása két optimalizálási technikából áll, nevezetesen a géptől függő és a géptől független kód optimalizálásból. A géptől függő és a géptől független kód optimalizálás között az a különbség, hogy a géptől függő optimalizálást az objektumkódra alkalmazzák, míg a géptől független kód optimalizálást a közbenső kódra alkalmazzák.

Töltse le a Machine Dependent vs Machine Independent Code Optimization PDF verzióját

Letöltheti e cikk PDF verzióját, és offline célokra felhasználhatja, az idézet megjegyzésének megfelelően. Töltse le itt a PDF verziót. Különbség a géptől függő és a géptől független kódoptimalizálás között

Referencia:

1. „Compiler Design | Kód optimalizálás. ” GeeksforGeeks. Itt érhető el
2.Pont, oktatóanyagok. “Compiler Design - Kódoptimalizálás.” Www.tutorialspoint.com, Tutorials Point, 2017. augusztus 15. Elérhető itt  
3.Estudies4you. “JNTUH CSE tananyag.” Különbség a gépfüggő és a független kódoptimalizálás között. Itt érhető el  

Kép jóvoltából:

1. 'Kompilátor' Írta: I, Surachit (CC BY-SA 3.0) a Commons Wikimedia segítségével