Announcement

Collapse
No announcement yet.

Kodunuzu Hızlandırmak İçin İpuçları

Collapse
X
  • Filtre
  • Zaman
  • Gösterim
Clear All
yeni mesajlar

  • Kodunuzu Hızlandırmak İçin İpuçları

    Mutlaka Okuyun! -> Kodunuzu Hızlandırmak İçin İpuçları
    --------------------------------------------------------------------------------
    Kodunuzu hızlandıracak öneriler, hepsi denenmiştir,
    şüpheniz varsa siz de deneyin.....
    Lafı fazla uzatmadan direk olaya giriyorum..
    Aşağıdakilerin hepsi denenmiştir ve performans arttırdığı
    mutlaktır, bana güvenin. İsterseniz kendiniz de
    deneyebilirsiniz..
     
    1) Değişken Tanımlama:

    Değişken tanımlarken hiçbir değişkeni mümkün olduğu
    sürece Variant halde bırakmayın ! Yani;
    Dim x, y, z

    diyerek kestirip atmayın. Variant tanımlar bellekte daha fazla yer tutar ve işlemleri yavaşlatır, her zaman explicit olun
    Dim x as String, y as Integer, z as Long
     
    2) String fonksiyonlarına dikkat edin!
    Burada da anlatmak istediğim fonksiyonun döndürdüğü tiple ilgili. Mesela Str ile Str$, Mid ile Mid$, Left-Left$, Right-Right$ aynı şeyler değil.. Örnekler çoğaltılabilir. Mid'i alırsak Mid ile döndürülen değer Variant'tır, eğer string tarzı bir şey istiyorsanız Mid$ kullanın !
    3) For Next Döngülerine Dikkat
    Fox x = 1 to 100000
    y = y + 1
    '....
    '....
    Next x
    Burada Next x kullandık, x döngüsünün sonlandığını belirtmek için.. Ancak yalnızca Next kullanmak büyük bir performans kazancı sağlayacaktır!! İsterseniz deneyin
    4) While Not Eof(DosyaNo)
    '....
    Wend
    Sıralı Okuma veya bir Recordset'ten okuma yaparken yukarıdaki gibi bir uygulamayı kullanırız. Ancak burada dikkat edilmesi gereken şey döngü her tur attığında dosya sonuna gelip gelmediğini kontrol etmek zorunda kalıyor. Bu da performans kaybına neden oluyor. Çözümü çok basit, Recordset'te veya dosyada kaç satır, kaç kayıt olduğunu öğrenin ve buna göre mesela

    For Dongu = 1 to KayitSayisi
    '....
    Next
    tarzı bir döngü kullanın.
    5) Sayısal veri tipleri arasında işlemlerin en hızlı yapıldığı veri türü Long'dur, çünkü her şeyiniz 32bit, long'da! Deneyin, geyik değil..
    6) UzunDeğişkenİsimleriİşlemleriYavaşlatır = MümkünOlduğunca Kısa değişken isimleri kullanın. Vb 256 karaktere kadar değişken tanımlamaya izin veriyor olması lazım ama bence siz kritik döngülerde olabildiğince kısa değişken isimleri kullanın.
    8) String işlemi yapmak istiyorsunuz, örneğin..:

    DosyaIcerik = DosyaIcerik + Okunan
    Şeklinde bir geyik yapmayın sakın, her seferinde bellek açmaya kastırmayın. Büyük döngülerde ölümcül yavaşlıklar ortaya çıkar.. İlk önce dosyaicerik'e bir buffer verin. Yani
    DosyaIcerik = Space$(2500)
    Daha sonra bu buffer'ı Mid$ fonksiyonuyla doldurun.
    Mid$(DosyaIcerik, 200, 500) = OkunanBolum..
    9) Bir işi Api ile yapabiliyorsanız başka yol kullanmayın, kritik görevlerde Api kullanmaya özen gösterin.
     
    Şu an için bi hevesle aklıma gelenler bunlar, bu ilk dokümanım, bilmiyorum foruma nasıl yansır.. Aklıma geldikçe ve olumlu eleştiriler alırsam devam ederim.. Hadi hayırlı olsun.
    Ozan Yasin Doğan
    Mutlaka Okuyun! -> Kodunuzu Hızlandırmak İçin İpuçları
    --------------------------------------------------------------------------------
    Kodunuzu hızlandıracak öneriler, hepsi denenmiştir,
    şüpheniz varsa siz de deneyin.....
    Lafı fazla uzatmadan direk olaya giriyorum..
    Aşağıdakilerin hepsi denenmiştir ve performans arttırdığı
    mutlaktır, bana güvenin. İsterseniz kendiniz de
    deneyebilirsiniz..
     
    1) Değişken Tanımlama:

    Değişken tanımlarken hiçbir değişkeni mümkün olduğu
    sürece Variant halde bırakmayın ! Yani;
    Dim x, y, z

    diyerek kestirip atmayın. Variant tanımlar bellekte daha fazla yer tutar ve işlemleri yavaşlatır, her zaman explicit olun
    Dim x as String, y as Integer, z as Long
     
    2) String fonksiyonlarına dikkat edin!
    Burada da anlatmak istediğim fonksiyonun döndürdüğü tiple ilgili. Mesela Str ile Str$, Mid ile Mid$, Left-Left$, Right-Right$ aynı şeyler değil.. Örnekler çoğaltılabilir. Mid'i alırsak Mid ile döndürülen değer Variant'tır, eğer string tarzı bir şey istiyorsanız Mid$ kullanın !
    3) For Next Döngülerine Dikkat
    Fox x = 1 to 100000
    y = y + 1
    '....
    '....
    Next x
    Burada Next x kullandık, x döngüsünün sonlandığını belirtmek için.. Ancak yalnızca Next kullanmak büyük bir performans kazancı sağlayacaktır!! İsterseniz deneyin
    4) While Not Eof(DosyaNo)
    '....
    Wend
    Sıralı Okuma veya bir Recordset'ten okuma yaparken yukarıdaki gibi bir uygulamayı kullanırız. Ancak burada dikkat edilmesi gereken şey döngü her tur attığında dosya sonuna gelip gelmediğini kontrol etmek zorunda kalıyor. Bu da performans kaybına neden oluyor. Çözümü çok basit, Recordset'te veya dosyada kaç satır, kaç kayıt olduğunu öğrenin ve buna göre mesela

    For Dongu = 1 to KayitSayisi
    '....
    Next
    tarzı bir döngü kullanın.
    5) Sayısal veri tipleri arasında işlemlerin en hızlı yapıldığı veri türü Long'dur, çünkü her şeyiniz 32bit, long'da! Deneyin, geyik değil..
    6) UzunDeğişkenİsimleriİşlemleriYavaşlatır = MümkünOlduğunca Kısa değişken isimleri kullanın. Vb 256 karaktere kadar değişken tanımlamaya izin veriyor olması lazım ama bence siz kritik döngülerde olabildiğince kısa değişken isimleri kullanın.
    8) String işlemi yapmak istiyorsunuz, örneğin..:

    DosyaIcerik = DosyaIcerik + Okunan
    Şeklinde bir geyik yapmayın sakın, her seferinde bellek açmaya kastırmayın. Büyük döngülerde ölümcül yavaşlıklar ortaya çıkar.. İlk önce dosyaicerik'e bir buffer verin. Yani
    DosyaIcerik = Space$(2500)
    Daha sonra bu buffer'ı Mid$ fonksiyonuyla doldurun.
    Mid$(DosyaIcerik, 200, 500) = OkunanBolum..
    9) Bir işi Api ile yapabiliyorsanız başka yol kullanmayın, kritik görevlerde Api kullanmaya özen gösterin.
     
    Şu an için bi hevesle aklıma gelenler bunlar, bu ilk dokümanım, bilmiyorum foruma nasıl yansır.. Aklıma geldikçe ve olumlu eleştiriler alırsam devam ederim.. Hadi hayırlı olsun.
    Ozan Yasin Doğan
İşlem Yapılıyor
X