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

Satura rādītājs:

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

Video: Atšķirība starp mašīnu atkarīgo un no mašīnas neatkarīgo koda optimizāciju

Video: Atšķirība starp mašīnu atkarīgo un no mašīnas neatkarīgo koda optimizāciju
Video: Sophie Lewis "Mothering Against The World" 2024, Decembris
Anonim

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

Datorprogrammas ir instrukciju kopas, kas dotas aparatūrai uzdevumu veikšanai. Šīs programmas pārsvarā ir rakstītas augsta līmeņa valodās, un dators šo valodu nesaprot. Tāpēc kompilators tiek izmantots, lai šīs instrukcijas pārvērstu mašīnkodā vai mērķa kodā. Tas iziet vairākas fāzes, lai izveidotu mērķa kodu. Koda optimizācija ir viena no tām. 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 no mašīnas atkarīgo un no mašīnas neatkarīgo koda optimizāciju ir tāda, ka no mašīnas atkarīgā optimizācija tiek piemērota objekta kodam, bet no mašīnas neatkarīga koda optimizācija tiek piemērota starpkodam.

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

Pārveidojot avota kodu objekta kodā vai mērķa kodā, kompilators iziet vairākas fāzes. Pirmkārt, pirmkods tiek piešķirts Lexical analizatoram, kas ražo marķierus. Pēc tam izvade tiek nodota sintakses analizatoram, kas pēta, vai ģenerētie marķieri ir loģiskā secībā. Šī izvade tiek dota semantiskajam analizatoram. Pieņemsim, ka ir koda fragments kā p=q + r;

Šeit p, q ir veseli skaitļi, bet r ir pludiņš. Izmantojot semantisko analizatoru, c integer mainīgais tiek pārveidots par pludiņu. Tāpēc tas veic semantisko analīzi. Semantiskā analizatora izvade nonāk starpposma koda ģeneratorā. Tas atgriež starpposma kodu, kas pēc tam nonāk koda optimizētājā. Koda optimizācija ir process, kurā tiek novērsti nebūtiski programmas paziņojumi, nemainot faktiskā pirmkoda nozīmi. Tā nav obligāta optimizācija, taču tā var uzlabot mērķa koda darbības laiku. Koda optimizētāja izvade tiek nodota koda ģeneratoram, un visbeidzot tiek izveidots mērķa kods.

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

Attēls 01: Kompilatora fāzes

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

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

Ja optimizācija tiek veikta starpposma kodam, to sauc par mašīnas neatkarīgo koda optimizāciju. Ir dažādi paņēmieni, lai panāktu no mašīnas neatkarīgu kodu optimizāciju. Tie ir aprakstīti, izmantojot šādus piemērus.

Izlasiet tālāk norādītās koda rindiņas.

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

b=x+2;

a[j]=5 j;

}

Saskaņā ar iepriekš minēto kodu katrā iterācijā 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]=5j;

}

To sauc par koda kustību.

Izlasiet tālāk norādītās koda rindiņas.

j=5;

if (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 uz vērtību 5. Tāpēc šo if bloku var noņemt. Šis paņēmiens ir mirušā koda likvidēšana.

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

Skatiet tālāk norādīto kodu.

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

vērtība=j5;

}

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 izpildlaikā 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];

Var būt šādi cilpas.

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 vienā cilpai šādi.

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

printf(“a \n”);

printf(“b\n”);

}

Cits svarīgs paņēmiens ir kopējās apakšizteiksmes likvidēšana. Lai veiktu aprēķinu, ir jāaizstāj identiskas izteiksmes ar vienu mainīgo. Skatiet tālāk norādīto kodu.

a=bc + k;

d=b c + m;

Šo kodu var konvertēt šādi.

temp=bc;

a=temp + k;

d=temp + m;

Nav nepieciešams atkal un atkal aprēķināt bc. Reizināto vērtību var saglabāt mainīgajā un izmantot atkārtoti.

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

Abi pieder pie koda optimizācijas

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

Mašīnas atkarīgs pret mašīnu neatkarīgu koda optimizāciju

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

Kopsavilkums - no mašīnas atkarīga un no mašīnas neatkarīga koda optimizācija

Koda optimizācija sastāv no diviem optimizācijas paņēmieniem, proti, no mašīnas atkarīgas un no mašīnas neatkarīgas koda optimizācijas. Atšķirība starp no mašīnas atkarīgo un no mašīnas neatkarīgo koda optimizāciju ir tāda, ka no mašīnas atkarīgā optimizācija tiek piemērota objekta kodam, savukārt no mašīnas neatkarīgā koda optimizācija tiek piemērota starpkodam.

Lejupielādēt PDF versiju par mašīnu atkarīgo un no mašīnas neatkarīgo kodu optimizāciju

Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistē saskaņā ar atsauces piezīmi. Lūdzu, lejupielādējiet PDF versiju šeit Atšķirība starp mašīnu atkarīgo un mašīnas neatkarīgo koda optimizāciju

Ieteicams: