Selamlar,
Delphi'nin derleyicisinin kökenleri Pascal'a kadar dayanır. Aslında Borland'ın hemen hemen tüm derleyicilerinde kod oprimizasyonu vardır ve kodu okuduktan sonra eğer hiç kullanılma ihtimali olmayan kodları derleyici otomatik olarak EXE'den çıkarır.
Şimdi şöyle bir kod yazarsanız
Kod: Tümünü seç
Procedure DENEME(intX : Integer) ;
Var
intI : Integer ;
Begin
intI := 0 ;
For intI := intX To intX+10 Do
Begin
// Ivır Zıvır İşlemler ;
End
End ;
Yukarıdaki kodda ilk olarak intI := 0 satır kod optimizasyonunda koddan atılır. Zira İki defa aynı değişkene atama yapılıyor. Ve bu atamalar arasında değişken hiç kullanılmıyor. Zaten derlemelerde Hint ve Warningler bu tür gereksiz kullanımları veya hata ihtimali oluşturabilecek kodların uyarısında bulunur.
Borland'ın derleyicileri SÜPER'dir. Eski zamanlarda (94 Senesiydi) Scrolling Star Field Intro'su hazırlarken, adresler arası taşıma işlemi yapıyorduk ve bazı hesaplamalar filan, neyse hızı bize biraz yavaş geldi bu işlemlerin. Oturup Assembler'da yazalım, Pascal'a o source yapıştıralım dedik. Ama öncesinde EXE'den debug edip, Pascal'ın nasıl yaptığına bir göz atalım, eğer hızlandırabileceğimiz bir şey varsa müdahale edelim dedik. Bizim yazdığımız Assembler komutlar yaklaşık 20 satır kadar tutuyordu. EXE'yi debug ettiğimizde derleyicinin bu işlemi aslında 4-5 satıra indirgeyip yaptığını görünce Gözlerimiz yuvalarından fırladı.
Ayrıca ek bilgi olarak söyleyim,
Kod: Tümünü seç
If (intA = 0) And (intB = 10) And (intC > 50) Then
Begin
// Ivır Zıvır
End ;
Yukarıdaki gibi birkaç OR veya AND komutlarında Borland Harika optimizasyonlar yapıp, assemblerda yazdığınız IF'i minimum CPU Cycle'ı harcayacak şekilde düzenliyor. Yani program Eğer intA'ya atanan değer 0 (Sıfır) değil ise, doğrudan geri Jump ediyor ve Hiç diğer karşılaştırmaları yapmıyor. Yani tek kelime ile HARİKA

. Aynı işlemi VB'de yaparsanız, VB bütün If'teki adımların hepsini yapar ve sonra karar verir. (Her nasıl karar veriyorsa bazen kendi insiyatifini kullanıp olumsuz durumlarda bile IF'e girebiliyor, yada tam tersini yapıp, tüm şartlar okey olsa bile girmemekte inat edebiliyor. Tecrübe ile sabittir
Muhtemelen sizin kodlarınızın bütünlüğünde veya çağrıldığı noktalarla ilgili sıkıntıları vardır bu sebeple kodu beğenmemiştir.
Bence kodu bir daha gözden geçirip kontrol edin eminim HINT ve Warningler verecektir.
Kolay Gelsin.