09- XC8'de Free vs Pro farkı ve Optimizasyon

09- XC8’de Free vs Pro farkı ve Optimizasyon

Merhaba sevgili okuyucu.

Bu yazıda XC8 derleyici optimizasyon aracından ve buna gereklilikten bahsedeceğim.

MPLABX Pro sürümü Free sürümüne kıyasla %50 daha az bellek kullandığını iddia ediyor. Bunu bazı optimizasyon algoritmalarından geçirerek derlediği için hem program hem ram bellekte boyutun düşmesini sağlayarak yapıyor.

Buna gerekliliği yazılımsal iyileştirmelerle azaltmak mümkün. Fakat kesinlikle bir şekilde illegal yoldan bulunan ilaçlara itibar etmemenizi öneriyorum. Eğer firma, yazılımına bir değer biçmiş ise bunu illegal şekilde aşmak bir suçtur. Suçtan öte vicdani rahatsızlık yaratır. “İndir kullan” çevremizde kolay yer edinmiş bir anlayış olduğu için “satın al” demek zor olacaktır. Fakat elimizden geldiğince buna dikkat etmek gereklidir. Örneğin bir öğrenci Proteus‘u pahalılığı nedeniyle alamayıp bu tarz yöntemlere başvurabilir. Burada ticari bir sonuç olmadığı için vicdani açıdan daha rahattır. (Tabii ki yine suçtur)

Fakat bunu XC8 de yapmamıza gerek olmayabilir. Bu yazı devamında elle yapılan optimizasyon nasıl yapılır ona bakacağız.

Genel hatlarıyla Pro sürümünde optimizasyon aracı ne yapıyor ve biz bunu nasıl elle yapabiliriz ?

Kullanılmayan değişkenleri kaldır

Bir değişken kullanılmasa da oluşturulduğu için RAM bellekte yer kaplar.

Optimizasyon aracı bunu hiç yazılmamış gibi var sayar ve derleme işlemine öyle devam eder. Bunun yerine bu değişkeni elle biz silersek hem doğal optimizasyon yapmış oluruz hem de kodlar üzerindeki hakimiyetimiz daha sağlam oluruz.

Etki etmeyen değişkenleri kaldır

Değişkeni oluşturmuşuz ve kullanmışız. Fakat hiçbir şeye etki etmiyor. Bu durum hem RAM de hem program hafızasında yer kaplar.

Sonucu değişmeyen sorguları kaldır

Bir değişken oluşturulmuş. Sonradan bir değer verilmiş. Fakat bu değişken zaten işaretsiz olduğu için 0 dan küçük olması imkansız. Bu durumda “if” sorgumuz tamamen geçersiz. Böyle olunca değişken hiçbir iş yapmamış oluyor. Bir önceki prensibe göre onları da silersek görüyoruz ki kodumuz çok hafifledi.

Sayıları gereksiz yere değişkene atama

Yine bir değişkenimiz var. Ve bu başka bir değerle işleme tabii tutulmuş. Eğer bu işlem zaten hep aynı şekilde yazılıyorsa hem RAM hafızada hem program hafızada yer kaplamaktan başka iş yapmıyor demektir. Bazen neyin nereden geldiğiyle ilgili bu tür kodlar yazılabiliyor. Fakat bunu açıklama satırı oluşturup yazmak daha iyi olacaktır. Hafızaya her zaman ihtiyaç vardır. Keza program karmaşası da cabası.

Sonucu değişmeyen sorguları kaldır -2

Yine bir sorgumuz var fakat öncekine nazaran bu olası. Yani 0 veya 1 olma durumu mevcut. Fakat örnekte hiçbir zaman 1 değerini alamıyor. Böyle olunca ne “if” sorgusuna ne de değişkene gerek kalmıyor.

Kullanılmayan fonksiyonları kaldır

Bir programda kullanılmasa bile fonksiyonlar program belleğine yazılabilir. Bu durum özellikle kendi yazdığımız kütüphaneler için geçerlidir. Hal böyle iken kodun kullanmayacağımız kısmını silmek yardımcı olacaktır.

 

Bunlar dışında assembly diline çevrildikten sonra yapılan bazı optimizasyonlar var.

  • Kullanılmayan alt programları silmek
  • Benzer yapıda olan kodları bir fonksiyon altında birleştirmek.

ASM kısmıyla ilgili daha detaylı bilgi için şu yazıyı tavsiye ederim.

 

Sonuç

Bu durumlar neticesinde baktığımızda birkaç önemli ipucu ortaya çıkıyor.

  • Emeğe saygı gösterip 30 dolara Pro sürümünü satın alıp bunları kafaya takmayabilirsiniz. (Tabii ki proje profesyonel ise kesinlikle satın almanızı öneririm. Özellikle ASM optimizsyon kısmı ciddi zaman tasarrufu sağlar elle yapmaya nazaran ki burada XC8 ile yazıyoruz kodumuzu. Öyle olsa ASM ile yazardık. Ayrıca belki bir alt kademedeki mikrodenetleyiciyi kullanabildiğiniz için maliyetiniz düşer.)
  • Sunulun ücretsiz (free) sürüm ile de Pro sürümde yapılan bazı optimizasyonları yapabilirsiniz
  • Elle yapılan optimizasyon sonucu kod yazma ve hakim olma yeteneğinizi geliştirebilirsiniz.
  • Yine elle yapılan optimizasyon sonunda daha rahat okunabilir kodlar ortaya çıkarabilirsiniz.

Önerim şudur ki.

Ücretsiz sürüm kullanıp kendi optimizasyonunuzu yapın ve vicdanınız rahat olsun.

İllegal “ilaç” kullanmayın.