Əsas Fərq – Maşından Asılı və Maşından Müstəqil Kod Optimizasiyası
Kompüter proqramları tapşırıqları yerinə yetirmək üçün aparata verilən təlimatlar toplusudur. Bu proqramlar daha çox yüksək səviyyəli dillərdə yazılır və kompüter həmin dili başa düşmür. Buna görə də, bu təlimatları maşın koduna və ya hədəf koduna çevirmək üçün tərtibçi istifadə olunur. Hədəf kodu yaratmaq üçün bir neçə mərhələdən keçir. Kodun optimallaşdırılması onlardan biridir. Maşından asılı və maşından asılı olmayan kod optimallaşdırması kimi iki optimallaşdırma texnikası var. Maşından asılı və maşından asılı olmayan kod optimallaşdırması arasındakı əsas fərq, maşından asılı optimallaşdırmanın obyekt koduna, maşından asılı olmayan kod optimallaşdırmasının aralıq koda tətbiq edilməsidir.
Maşından Asılı Kod Optimizasiyası nədir?
Mənbə kodunu obyekt koduna və ya hədəf koduna çevirən zaman tərtibçi bir neçə mərhələdən keçir. Əvvəlcə mənbə kodu tokenlər istehsal edən Leksik analizatora verilir. Sonra, nəticə yaradılan tokenlərin məntiqi qaydada olub olmadığını araşdıran sintaksis analizatoruna verilir. Həmin çıxış semantik analizatora verilir. Fərz edək ki, p=q + r; kimi kod parçası var
Burada p, q tam ədədlərdir, lakin r floatdır. Semantik analizatordan istifadə edərək c tam dəyişəni floata çevrilir. Buna görə də semantik analiz edir. Semantik analizatorun çıxışı Aralıq kod generatoruna gedir. O, aralıq kodu qaytarır və sonra kod optimallaşdırıcıya gedir. Kodun optimallaşdırılması faktiki mənbə kodunun mənasını dəyişdirmədən qeyri-vacib proqram ifadələrinin aradan qaldırılması prosesidir. Bu məcburi optimallaşdırma deyil, lakin hədəf kodun işləmə müddətini yaxşılaşdıra bilər. Kod optimallaşdırıcısının çıxışı kod generatoruna verilir və nəhayət, hədəf kod qurulur.
Şəkil 01: Kompilyatorun Fazaları
Maşından asılı kod optimallaşdırmasında optimallaşdırma mənbə koduna tətbiq edilir. Kifayət qədər resursların ayrılması bu optimallaşdırmada proqramın icrasını yaxşılaşdıra bilər.
Maşından Müstəqil Kod Optimizasiyası nədir?
Aralıq kodda optimallaşdırma aparıldıqda, buna maşından müstəqil kod optimallaşdırması deyilir. Maşından müstəqil kod optimallaşdırılmasına nail olmaq üçün müxtəlif üsullar mövcuddur. Onlar aşağıdakı nümunələrdən istifadə edilməklə təsvir edilmişdir.
Aşağıdakı kod sətirlərini oxuyun.
üçün (j=0; j<10; j ++) {
b=x+2;
a[j]=5 j;
}
Yuxarıdakı koda əsasən, hər iterasiyada b=x+2 təkrar-təkrar hesablanır. b hesablandıqdan sonra dəyişmir. Beləliklə, bu sətir aşağıdakı kimi dövrə xaricinə yerləşdirilə bilər.
b=x+2;
üçün (j=0; j< 10; j++)
{a[j]=5j;
}
Buna kod hərəkəti deyilir.
Aşağıdakı kod sətirlərini oxuyun.
j=5;
əgər (j==10) {
a=b+20;
}
Yuxarıdakı koda görə, ‘əgər blok’ heç vaxt icra olunmayacaq, çünki j dəyəri heç vaxt 10-a bərabər olmayacaq. O, artıq 5 dəyərinə işə salınıb. Buna görə də, bu if bloku silinə bilər. Bu texnika ölü kodun aradan qaldırılmasıdır.
Başqa bir üsul gücün azaldılmasıdır. Vurma kimi arifmetik əməliyyatlar daha çox yaddaş, vaxt və CPU dövrü tələb edir. Bu bahalı ifadələr b=a2 kimi ucuz ifadələrlə əvəz edilə bilər; və ya əlavə ilə əvəz edilə bilər, b=a + a;
Aşağıdakı koda baxın.
üçün (j=1; j <=5; j ++) {
dəyər=j5;
}
Çarpma əvəzinə kod aşağıdakı kimi dəyişdirilə bilər.
int temp=5;
üçün (j=1; j<=5; j++) {
temper=temp + 5;
dəyər=temp;
}
İş zamanı sabit olan ifadələri qiymətləndirmək mümkündür. Buna daimi bükülmə deyilir. b[j+1]=c [j+1]; kimi ifadə edilə bilər
Əvəzində o, aşağıdakı kimi dəyişdirilə bilər.
n=j +1;
b[n]=c[n];
Aşağıdakı kimi döngələr ola bilər.
üçün (j=0; j<5; j++) {
printf(“a\n”);
}
üçün (j=0; j <5; j++) {
printf("b\n");
}
A və b çap olunur, hər ikisində eyni sayda iterasiya olur. Hər ikisi aşağıdakı kimi birinə birləşdirilə bilər.
üçün (j=0; j <5; j++) {
printf("a \n");
printf("b\n");
}
Digər mühüm texnika Ümumi alt ifadənin aradan qaldırılmasıdır. Hesablama aparmaq üçün eyni ifadələri tək dəyişənlə əvəz etməkdir. Aşağıdakı koda baxın.
a=bc + k;
d=b c + m;
Bu kod aşağıdakı kimi çevrilə bilər.
temper=bc;
a=temp + k;
d=temp + m;
Bc-ni təkrar-təkrar hesablamaq tələb olunmur. Çoxaldılmış dəyər dəyişəndə saxlanıla və yenidən istifadə edilə bilər.
Maşından Asılı və Maşından Müstəqil Kod Optimizasiyası arasındakı oxşarlıq nədir?
Bunların hər ikisi Optimizasiya koduna aiddir
Maşından Asılı və Maşından Müstəqil Kod Optimizasiyası arasındakı fərq nədir?
Maşından Asılı vs Maşından Müstəqil Kod Optimizasiyası |
|
Maşından asılı kod optimallaşdırması obyekt koduna tətbiq edilir. | Maşından asılı olmayan kod optimallaşdırması ara koda tətbiq edilir. |
Təchizatla İştirak | |
Maşından asılı optimallaşdırma CPU registrlərini və mütləq yaddaş istinadlarını əhatə edir. | Maşından müstəqil kod optimallaşdırılması prosessor registrləri və ya mütləq yaddaş istinadlarını əhatə etmir. |
Xülasə – Maşından Asılı və Maşından Müstəqil Kod Optimizasiyası
Kod optimallaşdırılması iki optimallaşdırma texnikasından ibarətdir, yəni maşından asılı və maşından asılı olmayan kod optimallaşdırması. Maşından asılı və maşından asılı olmayan kod optimallaşdırması arasındakı fərq, maşından asılı optimallaşdırmanın obyekt koduna, maşından asılı olmayan kod optimallaşdırmasının isə ara koda tətbiq olunmasıdır.
Maşından Asılı və Maşından Müstəqil Kod Optimizasiyasının PDF Versiyasını endirin
Bu məqalənin PDF versiyasını yükləyə və sitat qeydinə əsasən onu oflayn məqsədlər üçün istifadə edə bilərsiniz. Zəhmət olmasa PDF versiyasını buradan endirin Maşından Asılı və Maşından Müstəqil Kod Optimizasiyası Arasındakı Fərq