Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма

Мазмуну:

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма
Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма

Video: Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма

Video: Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма
Video: Samsung Galaxy S10 барлық бөліктері сақталған! 2024, Декабрь
Anonim

Негизги айырма – Машинага көз каранды жана Машинадан көз карандысыз код оптималдаштыруу

Компьютердик программалар – тапшырмаларды аткаруу үчүн аппараттык камсыздоого берилген көрсөтмөлөрдүн жыйындысы. Бул программалар көбүнчө жогорку деңгээлдеги тилдерде жазылат жана компьютер ал тилди түшүнбөйт. Ошондуктан, компилятор бул көрсөтмөлөрдү машина кодуна же максаттуу кодго айландыруу үчүн колдонулат. Максаттуу кодду түзүү үчүн бир нече этаптан өтөт. Код оптималдаштыруу алардын бири болуп саналат. Машинага көз каранды жана машинадан көз карандысыз кодду оптималдаштыруу сыяктуу эки оптималдаштыруу ыкмалары бар. Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы негизги айырма машинага көз каранды оптималдаштыруу объект кодуна колдонулат, ал эми машинадан көз карандысыз код оптималдаштыруу ортодогу кодго колдонулат.

Машинага көз каранды кодду оптималдаштыруу деген эмне?

Башкы кодду объект кодуна же максаттуу кодго айландырганда, компилятор бир нече этаптан өтөт. Биринчиден, баштапкы код токендерди чыгарган Лексикалык анализаторго берилет. Андан кийин, чыгарылыш синтаксис анализаторуна берилет, ал түзүлгөн токендердин логикалык тартипте экендигин иликтейт. Ал жыйынтык семантикалык анализаторго берилет. p=q + r; катары коддун бир бөлүгү бар деп ойлойлу

Бул жерде, p, q - бүтүн сандар, бирок r - калкыма. Семантикалык анализатордун жардамы менен c бүтүн өзгөрмөсү калкып чыгуучуга айландырылат. Ошондуктан, ал семантикалык талдоо жүргүзөт. Семантикалык анализатордун чыгышы Intermediate код генераторуна барат. Ал ортодогу кодду кайтарат, андан кийин код оптимизаторуна өтөт. Кодду оптималдаштыруу - бул чыныгы баштапкы коддун маанисин өзгөртпөстөн, маанилүү эмес программалык билдирүүлөрдү жок кылуу процесси. Бул милдеттүү оптималдаштыруу эмес, бирок максаттуу коддун иштөө убактысын жакшыртат. Код оптимизаторунун чыгарылышы код генераторуна берилет жана акырында максаттуу код түзүлөт.

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма
Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма
Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма
Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма

01-сүрөт: Компилятордун фазалары

Машинага көз каранды код оптималдаштырууда, оптималдаштыруу баштапкы кодго колдонулат. Жетиштүү өлчөмдөгү ресурстарды бөлүштүрүү бул оптималдаштырууда программанын аткарылышын жакшыртат.

Машинанын көз карандысыз кодун оптималдаштыруу деген эмне?

Аралык коддо оптималдаштыруу жасалганда, ал машинадан көз карандысыз код оптималдаштыруу деп аталат. Машинадан көз карандысыз кодду оптималдаштырууга жетүү үчүн ар кандай ыкмалар бар. Алар төмөнкү мисалдар менен сүрөттөлөт.

Төмөнкү код саптарын окуңуз.

үчүн (j=0; j<10; j ++) {

b=x+2;

a[j]=5 j;

}

Жогорудагы кодго ылайык, b=x+2 ар бир итерацияда кайра-кайра эсептелет. б эсептелгенден кийин, ал өзгөрбөйт. Демек, бул сызыкты циклдин сыртына төмөнкүчө жайгаштырууга болот.

b=x+2;

үчүн (j=0; j< 10; j++)

{a[j]=5j;

}

Бул код кыймылы деп аталат.

Төмөнкү код саптарын окуңуз.

j=5;

эгерде (j==10) {

a=b+20;

}

Жогорку кодго ылайык, 'if block' эч качан аткарылбайт, анткени j мааниси эч качан 10го барабар болбойт. Ал мурунтан эле 5 маанисине инициализацияланган. Ошондуктан, бул if блогун алып салууга болот. Бул ыкма өлүк кодду жок кылуу болуп саналат.

Дагы бир ыкма – күчтү азайтуу. Көбөйтүү сыяктуу арифметикалык операциялар көбүрөөк эстутум, убакыт жана CPU циклдерин талап кылат. Бул кымбат туюнтмаларды b=a2 сыяктуу арзан туюнтмалар менен алмаштырууга болот; же кошумча менен алмаштырылышы мүмкүн, b=a + a;

Төмөнкү кодду караңыз.

үчүн (j=1; j <=5; j ++) {

маани=j5;

}

Көбөйтүүнүн ордуна кодду төмөнкүдөй өзгөртүүгө болот.

int temp=5;

үчүн (j=1; j<=5; j++) {

температура=темп + 5;

маани=темп;

}

Аткаруу убагында туруктуу болгон туюнтмаларды баалоого болот. Ал туруктуу бүктөлүү деп аталат. b[j+1]=c [j+1]; сыяктуу белгилениши мүмкүн

Анын ордуна, аны төмөнкүдөй өзгөртүүгө болот.

n=j +1;

b[n]=c[n];

Төмөнкүдөй илмектер болушу мүмкүн.

үчүн (j=0; j<5; j++) {

printf(“a\n”);

}

үчүн (j=0; j <5; j++) {

printf(“b\n”);

}

А жана b басып чыгаруу, экөөнүн тең кайталануу саны бирдей. Экөөнү тең төмөнкүдөй бир for циклине бириктирсе болот.

үчүн (j=0; j <5; j++) {

printf(“a \n”);

printf(“b\n”);

}

Дагы бир маанилүү ыкма - Common суб туюнтмаларды жок кылуу. Бул эсептөө жүргүзүү үчүн бирдей туюнтмаларды бир өзгөрмө менен алмаштыруу. Төмөнкү кодду караңыз.

a=bc + k;

d=b c + m;

Бул кодду төмөнкүдөй өзгөртүүгө болот.

температура=bc;

a=temp + k;

d=температура + м;

Кайта-кайта bc эсептөө талап кылынбайт. Көбөйтүлгөн маани өзгөрмөдө сакталып, кайра колдонулушу мүмкүн.

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосунда кандай окшоштук бар?

Бул экөө тең Оптимизация кодуна таандык

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосунда кандай айырма бар?

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруу

Машинага көз каранды код оптималдаштыруу объект кодуна колдонулат. Машинага көз карандысыз код оптималдаштыруу ортодогу кодго колдонулат.
Аппараттык камсыздоо
Машинага көз каранды оптималдаштыруу процессор регистрлерин жана абсолюттук эстутум шилтемелерин камтыйт. Машинага көз карандысыз код оптималдаштыруу процессор регистрлерин же абсолюттук эстутум шилтемелерин камтыбайт.

Кыскача маалымат – Машинага көз каранды жана Машинадан көз карандысыз код оптималдаштыруу

Код оптималдаштыруу эки оптималдаштыруу ыкмасынан турат, атап айтканда, машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруу. Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма машинага көз каранды оптималдаштыруу объект кодуна колдонулат, ал эми машинадан көз карандысыз код оптималдаштыруу орто аралык кодго колдонулат.

Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун PDF версиясын жүктөп алыңыз

Сиз бул макаланын PDF версиясын жүктөп алып, шилтеме эскертүүсүнө ылайык оффлайн максаттарында колдоно аласыз. Сураныч, PDF версиясын бул жерден жүктөп алыңыз Машинага көз каранды жана машинадан көз карандысыз код оптималдаштыруунун ортосундагы айырма

Сунушталууда: