Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark

İçindekiler:

Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark

Video: Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark

Video: Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
Video: Kendi kendine saklambaç öğrenen makine 2024, Temmuz
Anonim

Anahtar Farkı – Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu

Bilgisayar programları, görevleri gerçekleştirmek için donanıma verilen talimat kümeleridir. Bu programlar çoğunlukla üst düzey dillerde yazılır ve bilgisayar o dili anlamaz. Bu nedenle, bu talimatları makine koduna veya hedef koda dönüştürmek için bir derleyici kullanılır. Hedef kodu oluşturmak için birkaç aşamadan geçer. Kod optimizasyonu bunlardan biridir. Makineye bağlı ve makineden bağımsız kod optimizasyonu gibi iki optimizasyon tekniği vardır. Makineye bağlı ve makineden bağımsız kod optimizasyonu arasındaki temel fark, makineye bağlı optimizasyonun nesne koduna, makineden bağımsız kod optimizasyonunun ise ara koda uygulanmasıdır.

Makineye Bağlı Kod Optimizasyonu Nedir?

Kaynak kodu nesne koduna veya hedef koda dönüştürürken, derleyici birkaç aşamadan geçer. İlk olarak, kaynak kodu jeton üreten Lexical analizörüne verilir. Ardından çıktı, oluşturulan belirteçlerin mantıksal sırada olup olmadığını araştıran sözdizimi çözümleyicisine verilir. Bu çıktı anlamsal çözümleyiciye verilir. p=q + r şeklinde bir kod parçası olduğunu varsayalım;

Burada, p, q tam sayılardır, ancak r bir kayan noktadır. Anlamsal çözümleyici kullanılarak, c tamsayı değişkeni bir kayan nokta değerine dönüştürülür. Bu nedenle anlamsal analiz yapar. Semantik analizörün çıktısı, Ara kod oluşturucuya gider. Daha sonra kod iyileştiriciye giden bir ara kod döndürür. Kod optimizasyonu, gerçek kaynak kodunun anlamını değiştirmeden, gerekli olmayan program ifadelerini ortadan kaldırma işlemidir. Zorunlu bir optimizasyon değildir, ancak hedef kodun çalışma süresini iyileştirebilir. Kod iyileştiricinin çıktısı kod oluşturucuya verilir ve son olarak hedef kod oluşturulur.

Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark

Şekil 01: Derleyicinin Aşamaları

Makineye bağlı kod optimizasyonunda, kaynak koduna optimizasyon uygulanır. Yeterli miktarda kaynak tahsis etmek, bu optimizasyonda programın yürütülmesini iyileştirebilir.

Makineden Bağımsız Kod Optimizasyonu Nedir?

Ara kod üzerinde optimizasyon yapıldığında buna makine bağımsız kod optimizasyonu denir. Makineden bağımsız kod optimizasyonu elde etmek için farklı teknikler vardır. Aşağıdaki örnekler kullanılarak açıklanmıştır.

Aşağıdaki kod satırlarını okuyun.

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

b=x+2;

a[j]=5 j;

}

Yukarıdaki koda göre, her yinelemede b=x+2 tekrar tekrar hesaplanır. b hesaplandığında değişmez. Yani bu satır aşağıdaki gibi döngünün dışına yerleştirilebilir.

b=x+2;

for (j=0; j< 10; j++)

{a[j]=5j;

}

Buna kod hareketi denir.

Aşağıdaki kod satırlarını okuyun.

j=5;

if (j==10) {

a=b+20;

}

Yukarıdaki koda göre, j değeri asla 10'a eşit olmayacağından 'if bloğu' hiçbir zaman yürütülmeyecektir. Zaten 5 değerine başlatılmıştır. Bu nedenle, bu if bloğu kaldırılabilir. Bu teknik, ölü kodun ortadan kaldırılmasıdır.

Diğer bir yöntem de güç az altmadır. Çarpma gibi aritmetik işlemler daha fazla bellek, zaman ve CPU döngüsü gerektirir. Bu pahalı ifadeler, b=a2; veya ekleme ile değiştirilebilir, b=a + a;

Aşağıdaki koda bakın.

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

değer=j5;

}

Çarpma yerine kod şu şekilde değiştirilebilir.

int sıcaklık=5;

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

temp=temp + 5;

değer=sıcaklık;

}

Çalışma anında sabit olan ifadeleri değerlendirmek mümkündür. Sürekli katlama denir. b[j+1]=c [j+1]; şeklinde ifade edilebilir.

Bunun yerine aşağıdaki gibi değiştirilebilir.

n=j +1;

b[n]=c[n];

Aşağıdaki gibi döngüler olabilir.

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

printf(“a\n”);

}

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

printf(“b\n”);

}

a ve b'yi yazdırmak, her ikisi de aynı sayıda yinelemeye sahiptir. Her ikisi de aşağıdaki gibi bir for döngüsüyle birleştirilebilir.

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

printf(“a \n”);

printf(“b\n”);

}

Diğer önemli bir teknik de Ortak alt ifade eliminasyonudur. Hesaplamayı yapmak için aynı ifadeleri tek bir değişkenle değiştirmektir. Aşağıdaki koda bakın.

a=bc + k;

d=b c + m;

Bu kod aşağıdaki gibi dönüştürülebilir.

temp=bc;

a=sıcaklık + k;

d=sıcaklık + m;

bc'yi tekrar tekrar hesaplamak gerekmez. Çarpılan değer bir değişkende saklanabilir ve yeniden kullanılabilir.

Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Benzerlik Nedir?

Bunların ikisi de Kod Optimizasyonuna aittir

Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark Nedir?

Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu

Makineye bağlı kod optimizasyonu, nesne koduna uygulanır. Makineden bağımsız kod optimizasyonu, ara koda uygulanır.
Donanımla İlişki
Makineye bağlı optimizasyon, CPU kayıtlarını ve mutlak bellek referanslarını içerir. Makineden bağımsız kod optimizasyonu, CPU kayıtlarını veya mutlak bellek referanslarını içermez.

Özet – Makineye Bağlı ve Makineden Bağımsız Kod Optimizasyonu

Kod optimizasyonu, makineye bağlı ve makineden bağımsız kod optimizasyonu olmak üzere iki optimizasyon tekniğinden oluşur. Makineye bağlı ve makineden bağımsız kod optimizasyonu arasındaki fark, makineye bağlı optimizasyonun nesne koduna, makineden bağımsız kod optimizasyonunun ise ara koda uygulanmasıdır.

Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonunun PDF Sürümünü İndirin

Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlarla kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark

Önerilen: