Tietokoneohjelmat ovat laitteistoille annettuja ohjeita tehtävien suorittamiseksi. Nämä ohjelmat ovat pääosin kirjoitettu korkean tason kielillä, ja tietokone ei ymmärrä sitä kieltä. Siksi kääntäjää käytetään muuntamaan nämä ohjeet konekoodiksi tai kohdekoodiksi. Kohdekoodin rakentaminen käy läpi useita vaiheita. Koodin optimointi on yksi niistä. On olemassa kaksi optimointitekniikkaa, kuten kone riippuvainen ja koneesta riippumaton koodin optimointi. avainero Koneesta riippuvaisen ja koneesta riippumattoman koodin optimoinnin välillä on, että Koneesta riippuvaista optimointia sovelletaan objektikoodiin, kun taas koneiden riippumattomuuden optimointia sovelletaan välikoodiin.
1. Yleiskatsaus ja keskeiset erot
2. Mikä on koneriippuvainen koodin optimointi
3. Mikä on koneesta riippumaton koodin optimointi
4. Koneiden ja koneiden riippumattomuuden optimoinnin väliset yhtäläisyydet
5. Vertailu rinnakkain - koneriippuvainen vs koneiden riippumaton koodin optimointi taulukkomuodossa
6. Yhteenveto
Kun muunnetaan lähdekoodi objektikoodiksi tai kohdekoodiksi, kääntäjä käy läpi useita vaiheita. Ensin, lähdekoodi annetaan Lexical-analysaattorille, joka tuottaa rahakkeita. Sitten lähtö annetaan syntaksianalysaattorille, joka tutkii, ovatko generoidut tokenit loogisessa järjestyksessä. Tämä lähtö annetaan semanttiselle analysaattorille. Oletetaan, että on olemassa pala koodista p = q + r;
Tässä p, q ovat kokonaislukuja, mutta r on kelluva. Semanttista analysaattoria käyttämällä c-kokonaislukuarvo muunnetaan kelluvaksi. Siksi se suorittaa semanttisen analysoinnin. Semanttisen analysaattorin lähtö menee välikoodigeneraattoriin. Se palauttaa välikoodin, joka sitten menee koodin optimoijaan. Koodin optimointi on prosessi, jolla poistetaan välttämättömät ohjelmalausekkeet muuttamatta todellisen lähdekoodin merkitystä. Se ei ole pakollinen optimointi, mutta se voi parantaa kohdekoodin ajoaikaa. Koodin optimoijan lähtö annetaan koodigeneraattorille, ja lopuksi kohdekoodi rakennetaan.
Kuva 01: Kääntäjän vaiheet
Koneesta riippuvaisen koodin optimoinnissa optimointia sovelletaan lähdekoodiin. Riittävän määrän resurssien osoittaminen voi parantaa ohjelman suoritusta tässä optimoinnissa.
Kun välikoodille tehdään optimointi, sitä kutsutaan koneesta riippumattomaksi koodin optimoimiseksi. Koneiden riippumattoman koodin optimoimiseksi on olemassa erilaisia tekniikoita. Niitä kuvataan seuraavien esimerkkien avulla.
Lue alla olevat koodirivit.
for (j = 0; j<10; j ++)
b = x + 2;
a [j] = 5 * j;
Yllä olevan koodin mukaan b = x + 2 lasketaan uudestaan ja uudestaan jokaisessa iteraatiossa. Kun b on laskettu, se ei muutu. Joten tämä viiva voidaan sijoittaa silmukan ulkopuolelle seuraavasti.
b = x + 2;
for (j = 0; j< 10; j++)
a [j] = 5 * j;
Tätä kutsutaan koodiliikkeeksi.
Lue alla olevat koodirivit.
j = 5;
if (j == 10)
a = b + 20;
Yllä olevan koodin mukaan 'if block' ei koskaan toteudu, koska j-arvo ei koskaan ole yhtä kuin 10. Se on jo alustettu arvoon 5. Siksi tämä, jos lohko voidaan poistaa. Tämä tekniikka on kuollut koodin eliminointi.
Toinen menetelmä on lujuuden vähentäminen. Aritmeettiset toimenpiteet, kuten kertolasku, vaativat enemmän muistia, aikaa ja suorittimen jaksoja. Nämä kalliit lausekkeet voidaan korvata halvoilla lausekkeilla, kuten b = a * 2; tai voidaan korvata lisäämällä, b = a + a;
Katso alla oleva koodi.
for (j = 1; j <= 5; j ++)
arvo = j * 5;
Kertomuksen sijasta koodia voidaan muuttaa seuraavasti.
int temp = 5;
for (j = 1; j<=5; j++)
temp = temp + 5;
arvo = lämpötila;
On mahdollista arvioida lausekkeet, jotka ovat vakioita suorituksen aikana. Sitä kutsutaan jatkuva taittaminen. Siellä voidaan sanoa, kuten b [j + 1] = c [j + 1];
Sen sijaan sitä voidaan muuttaa seuraavasti.
n = j +1;
b [n] = c [n];
Silmukoita voi olla seuraavasti.
for (j = 0; j<5; j++)
printf ( ”\ n”);
for (j = 0; j <5; j++)
printf ( ”b \ n”);
Tulostamalla a ja b, molemmilla on sama määrä iteraatioita. Molemmat voidaan yhdistää yhdeksi silmukkaa varten seuraavasti.
for (j = 0; j <5; j++)
printf (“a \ n”);
printf ( ”b \ n”);
Toinen tärkeä tekniikka on Yleinen alalausekkeen eliminaatio. Laskennan suorittamiseksi on korvattava identtiset lausekkeet yhdellä muuttujalla. Katso paljekoodi.
a = b * c + k;
d = b * c + m;
Tämä koodi voidaan muuntaa seuraavasti.
temp = b * c;
a = temp + k;
d = temp + m;
B * c: tä ei tarvitse laskea uudestaan ja uudestaan. Kertolaskutettu arvo voidaan tallentaa muuttujaan ja käyttää sitä uudelleen.
Koneriippuvainen vs koneiden riippumaton koodin optimointi | |
Kohdekoodiin sovelletaan koneiden riippuvaisen koodin optimointia. | Koneiden riippumattomia koodin optimointeja sovelletaan välikoodiin. |
Osallistuminen laitteistoon | |
Koneesta riippuvainen optimointi sisältää CPU-rekisterit ja absoluuttiset muistiviitteet. | Koneesta riippumaton koodin optimointi ei sisällä CPU-rekistereitä tai absoluuttisia muistiviitteitä. |
Koodin optimointi koostuu kahdesta optimointitekniikasta, nimittäin koneesta riippuvainen ja koneesta riippumaton koodin optimointi. Ero koneesta riippuvaisen ja koneesta riippumattoman koodin optimoinnin välillä on, että koneesta riippuvaista optimointia sovelletaan objektikoodiin, kun taas koneiden riippumattoman koodin optimointia sovelletaan välikoodiin..
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio täältä Koneiden ja koneiden riippumattomuuden optimointi
1. ”Kääntäjän suunnittelu | Koodin optimointi. ” GeeksforGeeks. Saatavilla täältä
2.Piste, oppaat. “Kääntäjän suunnittelu - koodin optimointi.” Www.tutorialspoint.com, Tutorials Point, 15. elokuuta 2017. Saatavilla täältä
3.Estudies4you. “JNTUH CSE -oppimateriaali.” Ero koneriippuvaisen ja itsenäisen koodin optimoinnin välillä. Saatavilla täältä
1. 'Kääntäjä' Lähettäjä I, Surachit, (CC BY-SA 3.0) Commons Wikimedian kautta