Ero Koneesta Riippuvan Ja Koneesta Riippumattoman Koodin Optimoinnin Välillä

Sisällysluettelo:

Ero Koneesta Riippuvan Ja Koneesta Riippumattoman Koodin Optimoinnin Välillä
Ero Koneesta Riippuvan Ja Koneesta Riippumattoman Koodin Optimoinnin Välillä

Video: Ero Koneesta Riippuvan Ja Koneesta Riippumattoman Koodin Optimoinnin Välillä

Video: Ero Koneesta Riippuvan Ja Koneesta Riippumattoman Koodin Optimoinnin Välillä
Video: Energia- ja olosuhdedatan visualisointi -webinaari 2024, Saattaa
Anonim

Tärkein ero - koneista riippuvainen vs. koneista riippumaton koodin optimointi

Tietokoneohjelmat ovat laitteistolle annettuja ohjeita tehtävien suorittamiseksi. Nämä ohjelmat on kirjoitettu enimmäkseen korkean tason kielillä, eikä tietokone ymmärrä kyseistä kieltä. Siksi kääntäjää käytetään näiden ohjeiden muuntamiseen konekoodiksi tai kohdekoodiksi. Kohdekoodin rakentaminen käy läpi useita vaiheita. Koodin optimointi on yksi niistä. On olemassa kaksi optimointitekniikkaa, kuten koneesta riippuva ja koneesta riippumaton koodin optimointi. Keskeinen ero koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin välillä on, että koneesta riippuvaista optimointia käytetään objektikoodiin, kun taas koneesta riippumatonta koodin optimointia käytetään välikoodiin.

SISÄLLYS

1. Yleiskatsaus ja keskeinen ero

2. Mikä on koneesta riippuvainen koodin optimointi

3. Mikä on koneesta riippumaton koodin optimointi

4. Koneista riippuvien ja koneista riippumattomien koodien optimoinnin yhtäläisyydet

5. Vertailu rinnakkain - koneesta riippuvainen ja koneesta riippumaton koodin optimointi taulukkomuodossa

6. Yhteenveto

Mikä on koneesta riippuvainen koodin optimointi?

Muunnettaessa lähdekoodia olio- tai kohdekoodiksi kääntäjä käy läpi useita vaiheita. Ensinnäkin lähdekoodi annetaan Lexical-analysaattorille, joka tuottaa tunnuksia. Sitten lähtö annetaan syntaksianalysaattorille, joka tutkii, ovatko generoidut tunnukset loogisessa järjestyksessä. Tämä lähtö annetaan semanttiseen analysaattoriin. Oletetaan, että koodinpätkä on p = q + r;

Tässä p, q ovat kokonaislukuja, mutta r on kelluva. Semanttisen analysaattorin avulla c-kokonaisluku muuttuja muunnetaan kelluvaksi. Siksi se tekee semanttisen analyysin. Semanttisen analysaattorin lähtö menee välikoodigeneraattoriin. Se palauttaa välikoodin, joka sitten menee koodin optimoijaan. Koodin optimointi on prosessi, jolla eliminoidaan ei-välttämättömät ohjelmalausekkeet muuttamatta todellisen lähdekoodin merkitystä. Se ei ole pakollinen optimointi, mutta se voi parantaa kohdekoodin ajoaikaa. Koodinoptimoijan ulostulo annetaan koodigeneraattorille ja lopuksi kohdekoodi rakennetaan.

Ero koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin välillä
Ero koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin välillä

Kuva 01: Kääntäjän vaiheet

Konekohtaisessa koodin optimoinnissa optimointia käytetään lähdekoodiin. Riittävän määrän resurssien varaaminen voi parantaa ohjelman toteutusta tässä optimoinnissa.

Mikä on koneesta riippumaton koodin optimointi?

Kun optimointi tehdään välikoodille, sitä kutsutaan koneesta riippumattomaksi koodin optimoinniksi. On olemassa erilaisia tekniikoita koneista riippumattoman koodin optimoinnin saavuttamiseksi. Ne on kuvattu seuraavien esimerkkien avulla.

Lue palavat koodirivit.

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

b = x + 2;

a [j] = 5 * j;

}

Yllä olevan koodin mukaan b = x + 2 lasketaan uudestaan ja uudestaan kussakin iteraatiossa. Kun b on laskettu, se ei muutu. Joten tämä viiva voidaan sijoittaa silmukan ulkopuolelle seuraavasti.

b = x + 2;

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

{a [j] = 5 * j;

}

Tätä kutsutaan koodiliikkeeksi.

Lue palavat koodirivit.

j = 5;

jos (j == 10) {

a = b + 20;

}

Yllä olevan koodin mukaan 'jos lohko' ei koskaan toteudu, koska j-arvo ei koskaan ole yhtä suuri kuin 10. Se on jo alustettu arvoon 5. Siksi tämä, jos lohko voidaan poistaa. Tämä tekniikka on kuollut koodin poisto.

Toinen menetelmä on lujuuden vähentäminen. Aritmeettiset operaatiot, 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.

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

arvo = j * 5;

}

Kertoimen sijasta koodi voidaan vaihtaa seuraavasti.

int lämpötila = 5;

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

lämpötila = lämpötila + 5;

arvo = lämpötila;

}

On mahdollista arvioida lausekkeita, jotka ovat vakioita ajon aikana. Sitä kutsutaan jatkuvaksi taitokseksi. 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.

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

printf ("a / n");

}

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

printf ("b / n");

}

Tulostamalla a ja b, molemmilla on sama määrä iteraatioita. Molemmat voidaan yhdistää yhdeksi silmukalle seuraavasti.

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

printf ("a / n");

printf ("b / n");

}

Toinen tärkeä tekniikka on Common sub -lausekkeen eliminointi. Laskutoimitus on korvattava identtiset lausekkeet yhdellä muuttujalla. Katso paljaskoodi.

a = b * c + k;

d = b * c + m;

Tämä koodi voidaan muuntaa seuraavasti.

lämpötila = b * c;

a = lämpötila + k;

d = lämpötila + m;

Ei tarvitse laskea b * c uudestaan ja uudestaan. Kerrottu arvo voidaan tallentaa muuttujaan ja käyttää uudelleen.

Mikä on yhtäläisyys koneista riippuvan ja koneesta riippumattoman koodin optimoinnin välillä?

Molemmat kuuluvat koodin optimointiin

Mikä on ero koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin välillä?

Erilainen artikkeli keskellä taulukkoa

Koneesta riippuvainen vs. konekohtainen koodin optimointi

Konekohtaista koodin optimointia käytetään objektikoodiin. Koneesta riippumatonta koodin optimointia käytetään välikoodiin.
Osallistuminen laitteistoon
Konekohtainen optimointi sisältää prosessorirekisterit ja absoluuttiset muistiviitteet. Koneesta riippumaton koodin optimointi ei sisällä CPU-rekistereitä tai absoluuttisia muistiviittauksia.

Yhteenveto - koneista riippuvainen vs. koneista riippumaton koodin optimointi

Koodin optimointi koostuu kahdesta optimointitekniikasta, nimittäin koneesta riippuvasta ja koneesta riippumattomasta koodin optimoinnista. Koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin ero on siinä, että koneesta riippuvaista optimointia käytetään objektikoodiin, kun taas koneesta riippumatonta koodin optimointia käytetään välikoodiin.

Lataa PDF-versio koneista riippuvaisista ja koneista riippumattomista koodien optimoinnista

Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainausviestin mukaan. Lataa PDF-versio täältä Ero koneesta riippuvan ja koneesta riippumattoman koodin optimoinnin välillä

Suositeltava: