Atšķirība Starp Mašīnatkarīgo Un No Mašīnas Neatkarīgo Koda Optimizāciju

Satura rādītājs:

Atšķirība Starp Mašīnatkarīgo Un No Mašīnas Neatkarīgo Koda Optimizāciju
Atšķirība Starp Mašīnatkarīgo Un No Mašīnas Neatkarīgo Koda Optimizāciju

Video: Atšķirība Starp Mašīnatkarīgo Un No Mašīnas Neatkarīgo Koda Optimizāciju

Video: Atšķirība Starp Mašīnatkarīgo Un No Mašīnas Neatkarīgo Koda Optimizāciju
Video: Auto info pēc vin koda nemokamas patikrinimas. sužinokite apie transporto priemonės is 2024, Decembris
Anonim

Galvenā atšķirība - atkarīga no mašīnas un no mašīnas neatkarīga koda optimizācija

Datorprogrammas ir aparatūrai piešķirtu instrukciju kopumi uzdevumu veikšanai. Šīs programmas galvenokārt tiek rakstītas augsta līmeņa valodās, un dators šo valodu nesaprot. Tādēļ kompilators tiek izmantots, lai šīs instrukcijas pārveidotu mašīnkodā vai mērķa kodā. Lai izveidotu mērķa kodu, tas iet cauri vairākām fāzēm. Viena no tām ir koda optimizācija. Ir divas optimizācijas metodes, piemēram, no mašīnas atkarīga un no mašīnas neatkarīga koda optimizācija. Galvenā atšķirība starp mašīnu atkarīgo un no mašīnu neatkarīgo koda optimizāciju ir tāda, ka objekta kodam tiek piemērota mašīnatkarīga optimizācija, bet starpkodam tiek piemērota neatkarīga no mašīnas.

SATURS

1. Pārskats un galvenās atšķirības

2. Kas ir mašīnatkarīga koda optimizācija

3. Kas ir mašīnatkarīga koda optimizācija

4. Līdzības starp mašīnatkarīgo un mašīnatkarīgo koda optimizāciju

5. Blakus salīdzinājums - mašīnatkarīgais un mašīnas neatkarīgais koda optimizācija tabulas veidā

6. Kopsavilkums

Kas ir no mašīnām atkarīga koda optimizācija?

Konvertējot avota kodu par objekta kodu vai mērķa kodu, kompilators iziet vairākas fāzes. Pirmkārt, pirmkods tiek piešķirts Lexical analizatoram, kas ražo žetonus. Pēc tam izeja tiek ievadīta sintakses analizatorā, kas pēta, vai ģenerētie marķieri ir loģiskā secībā. Šī izeja tiek piešķirta semantiskajam analizatoram. Pieņemsim, ka ir koda gabals kā p = q + r;

Šeit p, q ir veseli skaitļi, bet r ir pludiņš. Izmantojot semantisko analizatoru, c veselā skaitļa mainīgais tiek pārveidots par pludiņu. Tāpēc tas veic semantisko analīzi. Semantiskā analizatora izeja nonāk starpproduktu ģeneratorā. Tas atgriež starpkodu, kas pēc tam nonāk kodu optimizatorā. Kodu optimizācija ir nebūtisku programmas paziņojumu novēršana, nemainot faktiskā pirmkoda nozīmi. Tā nav obligāta optimizācija, bet tā var uzlabot mērķa koda darbības laiku. Kodu optimizētāja izeja tiek piešķirta kodu ģeneratoram, un visbeidzot tiek izveidots mērķa kods.

Atšķirība starp mašīnatkarīgo un no mašīnas neatkarīgo koda optimizāciju
Atšķirība starp mašīnatkarīgo un no mašīnas neatkarīgo koda optimizāciju

01. attēls: sastādītāja fāzes

Mašīnas atkarīgā koda optimizācijā avota kodam tiek piemērota optimizācija. Pietiekama resursu apjoma piešķiršana var uzlabot programmas izpildi šajā optimizācijā.

Kas ir mašīnu neatkarīga koda optimizācija?

Kad starpkoda optimizācija tiek veikta, to sauc par mašīnu neatkarīgu koda optimizāciju. Ir dažādas metodes, kā panākt no mašīnas neatkarīgu koda optimizāciju. Tie ir aprakstīti, izmantojot šādus piemērus.

Lasiet zemāk redzamās koda rindas.

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

b = x + 2;

a [j] = 5 * j;

}

Saskaņā ar iepriekš minēto kodu katrā atkārtojumā atkal un atkal tiek aprēķināts b = x + 2. Kad b ir aprēķināts, tas nemainās. Tātad, šo līniju var novietot ārpus cilpas šādi.

b = x + 2;

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

{a [j] = 5 * j;

}

To sauc par koda kustību.

Lasiet zemāk redzamās koda rindas.

j = 5;

ja (j == 10) {

a = b + 20;

}

Saskaņā ar iepriekš minēto kodu 'if block' nekad netiks izpildīts, jo j vērtība nekad nebūs vienāda ar 10. Tā jau ir inicializēta vērtībai 5. Tāpēc, ja bloku var noņemt. Šis paņēmiens ir miris koda izslēgšana.

Vēl viena metode ir spēka samazināšana. Aritmētiskām operācijām, piemēram, reizināšanai, nepieciešams vairāk atmiņas, laika un CPU ciklu. Šīs dārgās izteiksmes var aizstāt ar tādām lētām izteiksmēm kā b = a * 2; vai to var aizstāt ar pievienošanu, b = a + a;

Skatiet zemāk esošo kodu.

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

vērtība = j * 5;

}

Reizināšanas vietā kodu var mainīt šādi.

int temp = 5;

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

temp = temp + 5;

vērtība = temp;

}

Ir iespējams novērtēt izteiksmes, kas izpildes laikā ir konstantes. To sauc par pastāvīgu locīšanu. Var norādīt, piemēram, b [j + 1] = c [j + 1];

Tā vietā to var mainīt šādi.

n = j +1;

b [n] = c [n];

Cilpas var būt šādas.

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

printf (“a / n”);

}

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

printf (“b / n”);

}

Drukājot a un b, abiem ir vienāds atkārtojumu skaits. Abus var apvienot ar vienu cilpu šādi.

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

printf (“a / n”);

printf (“b / n”);

}

Vēl viens svarīgs paņēmiens ir parastās sub izteiksmes izslēgšana. Lai veiktu aprēķinu, identiskās izteiksmes jāaizstāj ar vienu mainīgo. Skatiet zemāk redzamo kodu.

a = b * c + k;

d = b * c + m;

Šo kodu var pārveidot šādi.

temp = b * c;

a = temp + k;

d = temp + m;

Nav jāaprēķina b * c atkal un atkal. Pavairoto vērtību var saglabāt mainīgajā un izmantot atkārtoti.

Kāda ir līdzība starp mašīnatkarīgo un no mašīnu neatkarīgo koda optimizāciju?

Abi šie pieder koda optimizācijai

Kāda ir atšķirība starp mašīnatkarīgo un no mašīnas neatkarīgo koda optimizāciju?

Atšķirīgs raksts vidū pirms tabulas

Mašīnas atkarīgais pret mašīnu neatkarīgo koda optimizāciju

Objekta kodam tiek piemērota mašīnas atkarīga koda optimizācija. Starpproduktiem tiek izmantota koda neatkarīga koda optimizācija.
Iesaistīšanās aparatūrā
No mašīnas atkarīga optimizācija ietver CPU reģistrus un absolūtās atmiņas atsauces. No mašīnas neatkarīga koda optimizācija neietver CPU reģistrus vai absolūtās atmiņas atsauces.

Kopsavilkums - mašīnatkarīgais pret mašīnu neatkarīgais koda optimizācija

Kodu optimizācija sastāv no divām optimizācijas metodēm, proti, no mašīnas atkarīgas un no mašīnas neatkarīgas koda optimizācijas. Atšķirība starp mašīnu atkarīgu un no mašīnas neatkarīgu koda optimizāciju ir tāda, ka objekta kodam tiek piemērota no mašīnām atkarīga optimizācija, bet starpkodam tiek piemērota no mašīnas neatkarīga koda optimizācija.

Lejupielādējiet mašīnatkarīgo un mašīnu neatkarīgo kodu optimizācijas PDF versiju

Jūs varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistes vajadzībām, kā norādīts piezīmē. Lūdzu, lejupielādējiet šeit PDF versiju. Atšķirība starp mašīnatkarīgo un no mašīnas neatkarīgo koda optimizāciju

Ieteicams: