Tofauti Muhimu – Inategemea Mashine dhidi ya Uboreshaji wa Msimbo Huru wa Mashine
Programu za kompyuta ni seti za maagizo yanayotolewa kwa maunzi, ili kutekeleza majukumu. Programu hizi mara nyingi zimeandikwa katika lugha za hali ya juu, na kompyuta haielewi lugha hiyo. Kwa hivyo, mkusanyaji hutumiwa kubadilisha maagizo hayo kuwa nambari ya mashine au nambari inayolengwa. Inapitia awamu kadhaa ili kuunda nambari inayolengwa. Uboreshaji wa kanuni ni mojawapo. Kuna mbinu mbili za uboreshaji kama vile, tegemezi la mashine na uboreshaji wa msimbo huru wa mashine. Tofauti kuu kati ya uboreshaji wa msimbo unaotegemea mashine na mashine ni kwamba uboreshaji unaotegemea mashine unatumika kwa msimbo wa kitu huku uboreshaji wa msimbo huru wa mashine unatumika kwa msimbo wa kati.
Uboreshaji wa Msimbo unaotegemea Mashine ni nini?
Wakati wa kubadilisha msimbo wa chanzo kuwa msimbo wa kitu au msimbo lengwa, mkusanyaji hupitia awamu kadhaa. Kwanza, msimbo wa chanzo hupewa analyzer Lexical ambayo hutoa ishara. Halafu, matokeo hupewa kichanganuzi cha sintaksia ambacho huchunguza ikiwa tokeni zinazozalishwa ziko katika mpangilio mzuri. Matokeo hayo yanatolewa kwa kichanganuzi cha kisemantiki. Chukulia kuwa kuna kipande cha msimbo kama p=q + r;
Hapa, p, q ni nambari kamili, lakini r ni kuelea. Kwa kutumia kichanganuzi cha kisemantiki, kigezo kamili cha c kinabadilishwa kuwa kuelea. Kwa hivyo, hufanya uchambuzi wa kisemantiki. Matokeo ya kichanganuzi cha kisemantiki huenda kwa jenereta ya msimbo wa Kati. Hurejesha msimbo wa kati ambao kisha huenda kwa kiboresha kanuni. Uboreshaji wa msimbo ni mchakato wa kuondoa taarifa zisizo muhimu za programu bila kubadilisha maana ya msimbo halisi wa chanzo. Si uboreshaji wa lazima lakini, inaweza kuboresha muda wa uendeshaji wa msimbo lengwa. Matokeo ya kiboresha msimbo hutolewa kwa jenereta ya msimbo, na hatimaye, msimbo lengwa hutengenezwa.
Kielelezo 01: Awamu za Mkusanyaji
Katika uboreshaji wa msimbo unaotegemea mashine, uboreshaji hutumika kwenye msimbo wa chanzo. Kutenga kiasi cha kutosha cha rasilimali kunaweza kuboresha utekelezaji wa programu katika uboreshaji huu.
Uboreshaji wa Msimbo Unaojitegemea wa Mashine ni nini?
Uboreshaji unapofanywa kwenye msimbo wa kati, huitwa uboreshaji wa msimbo unaojitegemea wa mashine. Kuna mbinu tofauti za kufikia uboreshaji wa msimbo huru wa mashine. Zinafafanuliwa kwa kutumia mifano ifuatayo.
Soma mistari ya chini ya msimbo.
kwa (j=0; j<10; j ++) {
b=x+2;
a[j]=5 j;
}
Kulingana na msimbo ulio hapo juu, b=x+2 huhesabiwa tena na tena katika kila marudio. Mara b inapohesabiwa, haibadilika. Kwa hivyo, laini hii inaweza kuwekwa nje ya kitanzi kama ifuatavyo.
b=x+2;
kwa (j=0; j< 10; j++)
{a[j]=5 j;
}
Hii inaitwa mwendo wa msimbo.
Soma mistari ya chini ya msimbo.
j=5;
kama (j==10) {
a=b+20;
}
Kulingana na msimbo ulio hapo juu, 'if block' haitawahi kutekeleza kwa sababu thamani ya j haitawahi kuwa sawa na 10. Tayari imeanzishwa hadi nambari 5. Kwa hivyo, ikiwa kizuizi kinaweza kuondolewa. Mbinu hii ni uondoaji wa msimbo uliokufa.
Njia nyingine ni kupunguza nguvu. Uendeshaji wa hesabu kama vile kuzidisha unahitaji kumbukumbu zaidi, wakati na mizunguko ya CPU. Maneno haya ya gharama kubwa yanaweza kubadilishwa na maneno ya bei nafuu kama b=a2; au inaweza kubadilishwa na kuongeza, b=a + a;
Rejelea msimbo ulio hapa chini.
kwa (j=1; j <=5; j ++) {
thamani=j5;
}
Badala ya kuzidisha, msimbo unaweza kubadilishwa kama ifuatavyo.
int temp=5;
kwa (j=1; j<=5; j++) {
temp=temp + 5;
thamani=joto;
}
Inawezekana kutathmini vielezi ambavyo ni vya kudumu wakati wa utekelezaji. Inaitwa kukunja mara kwa mara. Inaweza kusemwa kama vile b[j+1]=c [j+1];
Badala yake, inaweza kubadilishwa kama ifuatavyo.
n=j +1;
b[n]=c[n];
Kunaweza kuwa na vitanzi kama ifuatavyo.
kwa (j=0; j<5; j++) {
printf(“a\n”);
}
kwa (j=0; j <5; j++) {
printf(“b\n”);
}
Kuchapisha a na b, zote zina idadi sawa ya marudio. Zote mbili zinaweza kuunganishwa hadi moja kwa kitanzi kama ifuatavyo.
kwa (j=0; j <5; j++) {
printf(“a \n”);
printf(“b\n”);
}
Mbinu nyingine muhimu ni kuondoa usemi mdogo wa Kawaida. Ni kuchukua nafasi ya misemo inayofanana na kigezo kimoja kufanya hesabu. Rejelea msimbo ulio hapa chini.
a=bc + k;
d=b c + m;
Msimbo huu unaweza kubadilishwa kama ifuatavyo.
temp=bc;
a=temp + k;
d=joto + m;
Hahitajiki kukokotoa bc tena na tena. Thamani iliyozidishwa inaweza kuhifadhiwa katika kigezo na kutumika tena.
Kuna Ulinganifu Gani Kati ya Kitegemezi cha Mashine na Uboreshaji wa Misimbo Huru ya Mashine?
Zote mbili ni za Uboreshaji wa msimbo
Kuna Tofauti gani Kati ya Kitegemezi cha Mashine na Uboreshaji wa Misimbo Huru ya Mashine?
Kitegemezi cha Mashine dhidi ya Uboreshaji wa Msimbo Unaojitegemea wa Mashine |
|
Uboreshaji wa msimbo unaotegemea mashine unatumika kwa msimbo wa kitu. | Uboreshaji wa msimbo bila mashine unatumika kwa msimbo wa kati. |
Kujihusisha na maunzi | |
Uboreshaji kutegemea mashine hujumuisha rejista za CPU na marejeleo kamili ya kumbukumbu. | Uboreshaji huru wa msimbo hauhusishi rejista za CPU au marejeleo kamili ya kumbukumbu. |
Muhtasari – Kitegemezi cha Mashine dhidi ya Uboreshaji wa Msimbo Unaojitegemea wa Mashine
Uboreshaji wa msimbo unajumuisha mbinu mbili za uboreshaji, ambazo ni tegemezi kwa mashine na uboreshaji wa msimbo unaojitegemea kwa mashine. Tofauti kati ya uboreshaji wa msimbo unaotegemewa na mashine ni kwamba uboreshaji unaotegemea mashine unatumika kwa msimbo wa kitu ilhali, uboreshaji wa msimbo huru wa mashine unatumika kwa msimbo wa kati.
Pakua Toleo la PDF la Kitegemezi cha Mashine dhidi ya Uboreshaji wa Msimbo Unaojitegemea wa Mashine
Unaweza kupakua toleo la PDF la makala haya na uitumie kwa madhumuni ya nje ya mtandao kulingana na dokezo la manukuu. Tafadhali pakua toleo la PDF hapa Tofauti Kati ya Kitegemezi cha Mashine na Uboreshaji wa Msimbo Unaojitegemea wa Mashine