Ynt: xc8 vs hitech

Başlatan hasankara, 08 Kasım 2013, 07:31:13

hasankara

İlgincime giden bir durumla karşılaştım ve sizinle bu durumu paylaşmak istedim.

önceden hitech de yazmış olduğum kodu xc8 ile de derledim. iki derleyici de kürekli versiyon. birebir aynı kod hitech le derleyince 4237 asm kod oluştururken xc8 de 4304 asm kod oluşturuyor. bu durumda, hitech in bu örneğe bakarak xc8 den daha iyi bir derleme yaptığını söyleyebilir miyiz?

diğer bir durumda mplab 8 in mplabx e göre nerdeyse her derleme için en az 2 kat daha hızlı olmasının bir açıklaması var mıdır? aynı kod ve aynı derleyiciler için mplabx ve mplab8 de aynı sayıda asm kodları alıyorum. derleyici ayarlarının(optimizasyon gibi) iki arayüzde de aynı olduğunu düşündüğümü belirtmiş olayım.

üstelik hitech derleme işlemi ile xc8 derleme işlemi aynı arayüzde iken de ciddi hız farkı görülmekte. hitech daha hızlı.

mesaj birleştirme:: 08 Kasım 2013, 07:42:45

mplabx_xc8(1.21)_____:30sn_4034asm
mplabx_hitech(9.71a)__:07sn_4237asm

mplab8_xc8(1.21)_____:09sn_4034asm
mplab8_hitech(9.71a)__:04sn_4237asm

not: mplabx süreyi kendi otomatik hesaplayıp output ta gösteriyor mplab8 de kendim bilgisayar saatine bakarak saydım.

Tagli

Hayır, bu veriler ışığında pek birşey söylemek mümkün değil. XC8'in kullandığı RAM ve ROM miktarları versiyondan versiyona değişebiliyor. Hatta yeni versiyonda biri artarken diğeri azalıyor. Bu kadar küçük farklara dayanarak yorum yapılamaz. Ayrıca, yanlış bilmiyorsam XC8, PIC10 PIC12 ve PIC16 için Hi-Tech'in devamı niteliğinde. PIC18 için ise daha çok C18'in devamı gibi. Aslında XC8 tek bir derleyici değil, iki derleyicinin tek çatı altında birleşmesi gibi.

Aslında asıl derlemeyi IDE değil derleyici yaptığı için MPLAB X ile MPLAB 8 arasında pek fark olmaması lazım. Ama genel olarak Java ile yazılan programların biraz daha ağır olduğunu söylemek mümkün. Yine de 30 saniye fazla yüksek bir süre, şaşırdım.
Gökçe Tağlıoğlu

Mr.Java

Kullandığın MCU yeni jenerasyon chiplerden değilse derleyicinin pek bir farkı kalmıyor.Oluşturulan kodlara değil optimasyon sonrası RAM ve ROM yüzdelerine bak.Ayrıca Hi-tech ve xc8'de optimasyonu pro seviyesine çek.Fakat şu bir gerçek ki hi-tech ile derlenen kod XC8'e göre çok daha çabuk derleniyor.Fakat dediğimiz gibi sonuçta tek bakman gereken yer RAM ve ROM'dur.MPLAB X ise netbeans tabanlı bir IDE.Kod yazarken ki rahatlığı,kullanım kolaylığı,kod formatlama,kod tamamlama v.s. gibi özellikler bakımından MPLAB derleyicisinden fazla tutuldu.Zaten gün ve gün güncelleniyor.

hasankara

#3
bu arada aklıma gelen bu konuyla alakalı bir deneyimimden bahsedeyim.

anadöngü ye sayaç koymuştum her döngüde bir long değişkeni arttırdım ve saniyede bir, değeri kaydedip değişkeni 0 ladım. daha sonra kaydettiğim. değeri lcd de gösterdim. bu sayede bir saniyede kaç kez anadöngüde döndüğünü görebiliyordum kodun performansını çok etkin bir şekilde görebiliyoruz çok faydalı oluyor en ufak kod değişikliğinin sonuca etkisini görebiliyordum. 595 lere veri yollayan bir kod grubum vardı aynı durum yaklaşık 8 kez tekrarlanıyordu bunu bir for döngüsünde yapabiliyordum ve aynı şekilde for un içini açıp sırayla aynı şeyi 8 kez yazarakta yapabiliyoruz. açarak yazınca hız farkı iyi görülüyordu. yanlış hatırlamıyorsam 1560 ile 1250 gibi bir fark oluşuyordu. bu lcd de gördüğüm değer oluyor.

şimdi bu yeni xc8 derleyicisi böyle durumları inceleyip kod şişikliğine göre performansı arttırmak için bu tarz döngü yerlerini açabiliyor mudur? düzeneği bread boardda kurmuştum bu yüzden şimdi yaptığım derleme denemelerinin sonuçlarını gözlemlemedim. ama dönem projemiz için ufak çaplı bir geliştirme kartı tasarlamam gerekecek, orda bu durumu muhtemelen inceleyeceğim.

mesaj birleştirme:: 08 Kasım 2013, 08:40:39

ram kullanımı iki derleyicidede değişmiyor. 182 byte harcanıyor iki derleyicidede. optimizasyon iki derleyicidede pro versiyonda.

kantirici

Ben içinde float işlemler olan bir programı hem xc8de hemde ccs c de denedim ve ccs c daha az yer kapladı.

Mplax in yavaş derleme olayıdanda ise, evet bazen takılıyor gereginden çok uzun sürüyor.

hasankara

breadboard üzerinde tekrar kurdum devreyi lcd taktım. gereksiz senaryoları önlemek için gereksiz fonksiyonları iptal ettim. aynı kod için

hitech__: 1133-1134 hz
xc8____: 1122-1123 hz

anadöngü tekrarlama frekansları.

pwm.c

#6
Bugün xc8 ile basit bir yazılımın denemesini yaptım.
şuanki en güncel versiyon olan v1.21 kurulu. önce free versiyon ile derleme yaptım daha sonra programı kürekleyip aynı proje dosyasını tekrar derledim.
çıkan sonuçlar şaşırtıcı. kürekli versiyonla derlediğimde daha az hex oluştu hemde yarı yarıya diyebilirim.
proteus denememde her ikiside eş zamanlı çalıştı.
Birde, bu free versiyonu MPLAB ve MPLABX ile ayrı ayrı denedim. MPLABX ile derlediğimde daha fazla hex oluştu ama fark çok fazla değildi.

denediğim kodları şu siteden aldım:
http://ramazansubasi.net/xc8-karasimsek/
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

Tagli

#7
Bu çok garip. Aynı derleyici ile MPLAB X ve MPLAB 8 arasında bir fark olmaması lazım. Belki proje ayarlarında bazı farklılıklar vardır. Aynı derleyiciyi farklı argümanlarla çağırıyor olabilirler. MPLAB X, ayarların komut satırına olan etkisini de gösteriyor, oradan kontrol etmekte fayda var.
Gökçe Tağlıoğlu

X-Fi

#8
Hi-tech için linker menüsünde clear bss , calibrate osc gibi checkler var bunlar kod üzerinde %1 oranda değişiklik sağlıyor MPLAP8 den MPLAPX e geçerken linker ayarlarının aynı olmasına dikkat ederek test yapınız.

Hi-Tech 9.71a versiyonunu zamanında çok kullandım gayet stabil bir versiyondu o zamanlar için ancak float geçişlerindeki 0.0001 sapmalar float to array çevrimi için saçma sapan kb larca kod üretmesi gibi durumlar söz konusuydu XC8 de bunlar düzeldimi bilmiyorum. Şunuda göz önünde bulundurmak lazım stm8 derleyicilerini örnek alsalar iyi olur. Dünyanın kullandığı M0 stabilitesinde compilier yapmasını beklemiyoruz ancak günümüzün teknolojisine uygun 8 bit stabil çalışan bir derleyici üretilmiş olmasını umuyorum. Açıkcası pic ile çalışacak olsam oturup eskiden karşılaşmış olduğum sorunları denerdim birtanesi bile çözülmemiş olsa bir daha yüzüne bile bakmam compilier hatalarını telafi ettiğimiz zamanları geçtik artık.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

subram

@pwm.c hocam mplab x code optimizasyon olayı var bir de. opitmizasyon seviyesini PRO yapıp dener misiniz?
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

pwm.c

Alıntı yapılan: subram - 10 Kasım 2013, 04:44:29
@pwm.c hocam mplab x code optimizasyon olayı var bir de. opitmizasyon seviyesini PRO yapıp dener misiniz?
evet tam dediğin gibi oldu. PRO yapınca hex dosyasının boyutu azaldı ve sonunda aynı hex oluştu. zaten diğer ayarlar aynı idi.
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-