Mahalagang Pagkakaiba – Machine Dependent vs Machine Independent Code Optimization
Ang mga computer program ay mga hanay ng mga tagubiling ibinibigay sa hardware, upang magsagawa ng mga gawain. Ang mga program na ito ay kadalasang nakasulat sa mataas na antas ng mga wika, at hindi naiintindihan ng computer ang wikang iyon. Samakatuwid, ang isang compiler ay ginagamit upang i-convert ang mga tagubiling iyon sa machine code o target code. Dumadaan ito sa ilang mga yugto upang mabuo ang target na code. Isa na rito ang pag-optimize ng code. Mayroong dalawang diskarte sa pag-optimize tulad ng, machine dependent at machine independent code optimization. Ang pangunahing pagkakaiba sa pagitan ng machine dependent at machine independent code optimization ay ang machine dependent optimization ay inilalapat sa object code habang ang machine independent code optimization ay inilalapat sa intermediate code.
Ano ang Machine Dependent Code Optimization?
Kapag kino-convert ang source code sa object code o target code, dumaan ang compiler sa ilang yugto. Una, ang source code ay ibinibigay sa Lexical analyzer na gumagawa ng mga token. Pagkatapos, ibibigay ang output sa syntax analyzer na nagsisiyasat kung ang mga nabuong token ay nasa lohikal na pagkakasunud-sunod. Ang output na iyon ay ibinibigay sa semantic analyzer. Ipagpalagay na mayroong isang piraso ng code bilang p=q + r;
Dito, ang p, q ay mga integer, ngunit ang r ay isang float. Gamit ang semantic analyzer, ang c integer variable ay na-convert sa isang float. Samakatuwid, ginagawa nito ang semantikong pagsusuri. Ang output ng semantic analyzer ay napupunta sa Intermediate code generator. Nagbabalik ito ng intermediate code na pagkatapos ay mapupunta sa code optimizer. Ang pag-optimize ng code ay ang proseso ng pag-aalis ng mga di-mahahalagang pahayag ng programa nang hindi binabago ang kahulugan ng aktwal na source code. Ito ay hindi isang sapilitang pag-optimize ngunit, maaari itong mapabuti ang oras ng pagpapatakbo ng target na code. Ang output ng code optimizer ay ibinibigay sa code generator, at sa wakas, ang target na code ay binuo.
Figure 01: Mga Phase ng Compiler
Sa machine dependent code optimization, inilalapat ang optimization sa source code. Ang paglalaan ng sapat na halaga ng mga mapagkukunan ay maaaring mapabuti ang pagpapatupad ng programa sa pag-optimize na ito.
Ano ang Machine Independent Code Optimization?
Kapag ginawa ang pag-optimize sa intermediate code, ito ay tinatawag na machine independent code optimization. Mayroong iba't ibang mga diskarte para sa pagkamit ng machine independent code optimization. Inilalarawan ang mga ito gamit ang mga sumusunod na halimbawa.
Basahin ang mga sumusunod na linya ng code.
para sa (j=0; j<10; j ++) {
b=x+2;
a[j]=5 j;
}
Ayon sa code sa itaas, ang b=x+2 ay paulit-ulit na kinakalkula sa bawat pag-ulit. Kapag nakalkula ang b, hindi ito nagbabago. Kaya, maaaring ilagay ang linyang ito sa labas ng loop gaya ng sumusunod.
b=x+2;
para sa (j=0; j< 10; j++)
{a[j]=5j;
}
Tinatawag itong code movement.
Basahin ang mga sumusunod na linya ng code.
j=5;
if (j==10) {
a=b+20;
}
Ayon sa code sa itaas, ang ‘if block’ ay hindi kailanman ipapatupad dahil ang j value ay hindi kailanman magiging katumbas ng 10. Ito ay nasimulan na sa value 5. Samakatuwid, ito kung ang block ay maaaring alisin. Ang diskarteng ito ay dead code elimination.
Ang isa pang paraan ay pagbabawas ng lakas. Ang mga pagpapatakbo ng aritmetika tulad ng pagpaparami ay nangangailangan ng higit pang memorya, oras, at mga cycle ng CPU. Ang mga mamahaling expression na ito ay maaaring mapalitan ng mga murang expression tulad ng b=a2; o maaaring palitan ng karagdagan, b=a + a;
Suriin ang code sa ibaba.
para sa (j=1; j <=5; j ++) {
value=j5;
}
Sa halip na multiplikasyon, maaaring baguhin ang code gaya ng sumusunod.
int temp=5;
para sa (j=1; j<=5; j++) {
temp=temp + 5;
value=temp;
}
Posibleng suriin ang mga expression na mga constant sa runtime. Ito ay tinatawag na patuloy na pagtitiklop. May maaaring sabihin tulad ng b[j+1]=c [j+1];
Sa halip, maaari itong baguhin tulad ng sumusunod.
n=j +1;
b[n]=c[n];
Maaaring magkaroon ng mga loop gaya ng sumusunod.
para sa (j=0; j<5; j++) {
printf(“a\n”);
}
para sa (j=0; j <5; j++) {
printf(“b\n”);
}
Pagpi-print ng a at b, pareho ang bilang ng mga iteration. Parehong maaaring pagsamahin sa isa para sa loop gaya ng sumusunod.
para sa (j=0; j <5; j++) {
printf(“a \n”);
printf(“b\n”);
}
Ang isa pang mahalagang diskarte ay ang Common sub expression elimination. Ito ay upang palitan ang magkatulad na mga expression na may isang solong variable upang gawin ang pagkalkula. Sumangguni sa ibabang code.
a=bc + k;
d=b c + m;
Maaaring i-convert ang code na ito bilang mga sumusunod.
temp=bc;
a=temp + k;
d=temp + m;
Hindi kinakailangang kalkulahin ang bc nang paulit-ulit. Ang pinarami na halaga ay maaaring maimbak sa isang variable at magamit muli.
Ano ang Pagkakatulad sa pagitan ng Machine Dependent at Machine Independent Code Optimization?
Parehong ito ay nabibilang sa code Optimization
Ano ang Pagkakaiba sa pagitan ng Machine Dependent at Machine Independent Code Optimization?
Machine Dependent vs Machine Independent Code Optimization |
|
Ang machine dependent code optimization ay inilapat sa object code. | Machine-independent code optimization ay inilapat sa intermediate code. |
Paglahok sa Hardware | |
Ang pag-optimize na nakadepende sa makina ay kinasasangkutan ng mga rehistro ng CPU at ganap na sanggunian sa memorya. | Machine independent code optimization ay hindi nagsasangkot ng mga rehistro ng CPU o ganap na memory reference. |
Buod – Machine Dependent vs Machine Independent Code Optimization
Ang pag-optimize ng code ay binubuo ng dalawang diskarte sa pag-optimize, ang machine dependent at machine independent na pag-optimize ng code. Ang pagkakaiba sa pagitan ng machine dependent at machine independent code optimization ay ang machine dependent optimization ay inilalapat sa object code samantalang, ang machine independent code optimization ay inilalapat sa intermediate code.
I-download ang PDF Version ng Machine Dependent vs Machine Independent Code Optimization
Maaari mong i-download ang PDF na bersyon ng artikulong ito at gamitin ito para sa mga offline na layunin ayon sa tala ng pagsipi. Paki-download ang bersyon ng PDF dito Pagkakaiba sa pagitan ng Machine Dependent at Machine Independent Code Optimization