Exenin hızlı çalışması için boyut önemlimidir?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Exenin hızlı çalışması için boyut önemlimidir?

Mesaj gönderen yuksel2004 »

Arkadaşlar forumda exe boyutu ile ilgili bazı yazılar da bu konuda bazı farklı görüşler gördüm.Çoğunluk exe boyutunun önemli olmadığı konusunda hemfikir.Bencede önemli değil çünkü artık sabit disk dorunu yok gibi.Benim sormak istediğim ise şu.Exenin ihtiyaç duyduğu dosyaları exe içine gömersek mi exe daha az bellek kullanır.Yani o zaman sadece ilgili bpl dosyasına ihtiyaç duyulunca belleğe yüklenir işi bitince belleği boşaltır ama exe içine gömülü olursa devamlı belleği işgal eder düşüncesi doğrumudur.Eğer bu dosyaları exenin içine gömmek istemez isek hangi dosyaları alacağımızı tam ve eksiksiz olarak bilebileceğimiz bir yol varmı?ve bunları system32 altına atmak ile exe ile aynı klasöre atmak arasında bir fark varmı?Yani biraz uzun oldu ama asıl derdim şu exenin boyutundan çok performansı önemli .Hangi yolu izlemeliyim.Görüşleriniz için çok teşekkürler.
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba ,
öncelikle BPL lerin exe içine gömük durumda çağrılması işinin daha hızlı olacağını savunan birisi olduğumu belirtmek isterim. yok hayır ben ayrı kullanmak isterim dersen system32 yada çalışma klasöründe olması yeterli.
şimdi şöyle bir durum var EXE nin boyutsal açıdan hafızaya yüklenmesi ve kullanılan objelerin hafızaya yüklenmesi durumu , normalde çalıştırılan bütün EXE ler hafızada EXE nin boyutu kadar yer işgal eder daha önce forumda konuşulmuştu özel yöntemlerle örneğin içerisinde resource olarak çok büyük dosyalar mesela film dosyları olan EXE lerin ihtiyaç duydukça hafıyza yüklenmesi gibi , sonuçta Delphinin standart ürettiği EXE ler çalıştırıldığı anda hafızaya komple yüklenir. asıl performansı etkileyecek yöntem objelerin ihtiyaç duyuldukça hafızaya yüklenmesi durumlarıdır bunlar ayrıca yer işgal ederler biz programcılar hafıza yönetiminin daha çok bu yanına önem göstermeliyiz evet BPL dosyalarıda ihtayaç duyulduğunda hafızaya yüklenirler daha doğrusu bir objenin yaratılması gibi düşünebilrsiniz.
biraz karışık gibi oldu ama umarım yardımcı olabilmişimdir.
Volkan KAMADAN
www.polisoft.com.tr
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

BPL olarak değil de, EXE içine derlenmesi her zaman daha iyidir. Bunun nedenlerini birkaç örnek ile anlatmaya çalışayım.

1- EXE dosyanızın boyutu küçük olsun diye tutup paketleri ayırıyorsunuz ve BPL olarak dağıtıyorsunuz diyelim. Zannediyorsunuz ki uygulamamın boyutu küçüldü. Hayır. Tam tersine, toplam boyutu aslında büyüdü. Şöyle ki:
EXE içinde bir TDBGrid kullandınız diyelim ve diyelim ki bu da HEDE.BPL içinde yeralsın. Ancak HEDE.BPL de sadece TDBGrid yok ki. Uygulamanızda kullanmadığınız TDBEdit, TDBText vs.. türü componentler de bu BPL'de. Exe içine derleseydiniz compiler sadece TDBGrid ile ilişkili kodu ekleyecekti. Fakat siz böyle yaparak kullanmadığınız birçok bileşenin kodunu da dağıtmış oldunuz. Atıyorum, 300Kb tutacak program BPL ile birlikte 800 Kb oldu.

2- BPL dosyaları ya dinamik ya da statik bağlanırlar. BPL içindeki kodu kullanmak için compiler

Kod: Tümünü seç

CALL bilmemneadresi
şeklinde bir çağrıyı da kod içine ekler. Bu da kod içinde hem artışa hem de ektra CPU zamanına ihtiyaç duyar. Ancak tabiri caizse EXE içine gömdüğünüzde, sadece kullandığınız bileşeni doğrudan makine dili ile kodunuza ekler. Bir CALL çağrısına ihtiyaç duymaz. Zaten Delphi derleyicisinin gücü buradadır. Kendisi bir native compiler'dır ve DLL gibi harici dosyalara link ihtiyacı duymadan (VBasic gibi) kodu diretk olarak makine diline dönüştürerek EXE nin çalışma performansını arttırır.

Eğer BPL'leri dinamik allocate deallocate masrafına katlanacaksanız bellek yönetimini çok dikkatli yapacaksanız, ki bu da size epey bir kod yazmaya malolacaktır, BPL kullanın. Bu sayede kodu, kullanılmadığı zamanlarda bellekten atabilirsiniz. Bence lüzumsuz ve gereksiz bir külfet. Zaten Windows gibi, programlarımın da bir DLL Hell'e dönüşmesini istemezdim.
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Mesaj gönderen yuksel2004 »

Arkadaşlar ço teşekkürler verdiğiniz cevaplar gerçekten çok aydınlatıcı.nladığım şu exeye gömmek daha iyi.Bu zaten biz programcılar içinde en iyisi.Son kullanıcının her halini hesaba katmamız gerekirse bu yol daha da güvenli.Çünkü kullanıcı yanlışlıkla bi bpl dosyayı silse olumsuz sonuçlar ortaya çıkar.Gerçi bu durum diğer dadabase dosyalarında da geçerli ama .En sonki düşüncelerinizle zaten her şey çok açık.Delphinin farkı olarak ortaya koyduğunuz olay.Cevaplarınız için çok teşekkürler.
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
Cevapla