Bilgisayar programları görevleri yerine getirmek için donanıma verilen talimat setleridir. Bu programlar çoğunlukla üst düzey dillerde yazılır ve bilgisayar bu dili anlamıyor. Bu nedenle, bu talimatları makine koduna veya hedef koda dönüştürmek için bir derleyici kullanılır. Hedef kodu oluşturmak birkaç aşamadan geçer. Kod optimizasyonu bunlardan biri. Makineye bağlı ve makineden bağımsız kod optimizasyonu gibi iki optimizasyon tekniği vardır. temel fark makineye bağımlı ve makineden bağımsız kod optimizasyonu arasında nesne koduna makineye bağlı optimizasyon uygulanırken, ara koda makineden bağımsız kod optimizasyonu uygulanır.
1. Genel Bakış ve Temel Fark
2. Makineye Bağımlı Kod Optimizasyonu Nedir
3. Makineden Bağımsız Kod Optimizasyonu Nedir
4. Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Benzerlikler
5. Yan Yana Karşılaştırma - Tablo Bağımlı Olarak Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu
6. Özet
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. Daha sonra çıktı, oluşturulan belirteçlerin mantıksal sırada olup olmadığını araştıran sözdizimi analizörüne verilir. Bu çıktı semantik analizöre verilir. P = q + r gibi bir kod parçası olduğunu varsayın;
Burada p, q tamsayıdır, ancak r bir şamandıradır. Anlamsal çözümleyici kullanılarak, c tamsayı değişkeni bir şamandıraya dönüştürülür. Bu nedenle anlambilimsel analiz yapar. Anlamsal çözümleyicinin çıktısı Ara kod üretecine gider. Daha sonra kod optimize ediciye 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 üretecine verilir ve son olarak hedef kod oluşturulur.
Şekil 01: Derleyicinin Aşamaları
Makineye bağlı kod optimizasyonunda, kaynak koduna optimizasyon uygulanır. Yeterli miktarda kaynak tahsis edilmesi, bu optimizasyonda programın yürütülmesini geliştirebilir.
Ara kodda optimizasyon yapıldığında, buna makineden bağımsız kod optimizasyonu denir. Makineden bağımsız kod optimizasyonu elde etmek için farklı teknikler vardır. Bunlar aşağıdaki örnekler kullanılarak açıklanmıştır.
Aşağıdaki kod satırlarını okuyun.
için (j = 0; j<10; j ++)
b = x + 2;
bir [j] = 5 * j;
Yukarıdaki koda göre, her bir yinelemede b = x + 2 tekrar tekrar hesaplanır. B hesaplandıktan sonra değişmez. Böylece, bu çizgi ilmek dışına aşağıdaki gibi yerleştirilebilir.
b = x + 2;
için (j = 0; j< 10; j++)
a [j] = 5 * j;
Buna kod hareketi denir.
Aşağıdaki kod satırlarını okuyun.
J = 5;
eğer (j == 10)
a = b + 20;
Yukarıdaki koda göre, j değeri hiçbir zaman 10'a eşit olmayacağı için 'if block' hiçbir zaman yürütülmez. Bu nedenle, bu blok kaldırılabilir. Bu teknik ölü kodların ortadan kaldırılmasıdır.
Başka bir yöntem de güç azalmasıdır. Çarpma gibi aritmetik işlemler daha fazla bellek, zaman ve CPU döngüsü gerektirir. Bu pahalı ifadelerin yerini b = a * 2; veya ilavesiyle değiştirilebilir, b = a + a;
Aşağıdaki koda bakın.
için (j = 1; j <= 5; j ++)
değer = j * 5;
Çarpma yerine kod aşağıdaki gibi değiştirilebilir.
int sıcaklık = 5;
için (j = 1; j<=5; j++)
sıcaklık = sıcaklık + 5;
değer = sıcaklık;
Çalışma zamanında sabit olan ifadeleri değerlendirmek mümkündür. Denir sabit katlama. B [j + 1] = c [j + 1];
Bunun yerine, aşağıdaki gibi değiştirilebilir.
n = j +1;
b [n] = c [n];
Aşağıdaki gibi döngüler olabilir.
için (j = 0; j<5; j++)
Printf ( “\ n”);
için (j = 0; j <5; j++)
Printf ( “B \ n”);
A ve b yazdırıldığında, her ikisi de aynı sayıda yinelemeye sahiptir. Her ikisi de aşağıdaki gibi döngü için birle birleştirilebilir.
için (j = 0; j <5; j++)
printf (“a \ n”);
Printf ( “B \ n”);
Bir diğer önemli teknik ise Ortak alt ifade eliminasyonu. Hesaplamayı yapmak için özdeş ifadeleri tek bir değişkenle değiştirmektir. Körük koduna bakın.
a = b * c + k;
d = b * c + m;
Bu kod aşağıdaki gibi dönüştürülebilir.
sıcaklık = b * c;
a = sıcaklık + k;
d = sıcaklık + m;
B * c'yi tekrar tekrar hesaplamak gerekli değildir. Çarpılan değer bir değişkende saklanabilir ve tekrar kullanılabilir.
Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu | |
Nesne koduna makineye bağlı kod optimizasyonu uygulanır. | Makineden bağımsız kod optimizasyonu ara koda uygulanır. |
Donanımla İlişkiler | |
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. |
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 uygulanması, makineden bağımsız kod optimizasyonunun ara koda uygulanmasıdır.
Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlar için kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin Makineye Bağımlı ve Makineden Bağımsız Kod Optimizasyonu Arasındaki Fark
1. “Derleyici Tasarımı | Kod Optimizasyonu. ” GeeksforGeeks. Burada mevcut
2. Nokta, Öğreticiler. “Derleyici Tasarımı - Kod Optimizasyonu.” Www.tutorialspoint.com, Tutorials Point, 15 Ağustos 2017. Buradan ulaşabilirsiniz
3.Estudies4you. “JNTUH CSE Eğitim Materyali.” Makineye Bağımlı ve Bağımsız Kod Optimizasyonu arasındaki fark. Burada mevcut
1.'Compiler 'Commons Wikimedia üzerinden I, Surachit, (CC BY-SA 3.0)