|
- Ayın İpucu - |
|
Kontrollere veri gönderirken, onları gizleyin. Örneğin, bir listbox'ta 1000 tane string göstermek
istiyorsunuz. Önce, 'Visible' özelliğini 'false' yapın,
stringleri ekleyin, ve tekrar 'true' yaparak görünür
hale getirin. Böylece listbox'ın her eklemede kendini
yenilemesine gerek kalmayacak ve daha hızlı işlem
yapacaktır. İşlem bittikten sonra kendisini bir kere
yenilemesi yeterli olacaktır.
|
|
| Visual Basic Optimizasyonu |
Ana Sayfa >
Genel Optimizasyon >
Hafıza Optimizasyonu
Hafızayı Optimize Etmek
Ölü Kodlardan Kurtulun
Ölü kod, gereksiz, silinmesi bir şeyi değiştirmeyen
kod anlamına gelir.
Ölü kodlar, hiç çağırılmayan fonksiyonları ve
alt-programları, hiç kullanılmayan property (özellik)
leri, sabitleri (const) ve enum değişkenlerini
içerebilir. Ölü değişkenler, bir değer verilmiş olmasına
rağmen hiç çağırılmayan değişkenlerdir.
Kullanıcı-tanımlı type (tip) ler de ölü olabilir. Ayrıca
bir sürü gereksiz API tanımlamaları da olabilir.
Ölü kodlar fazladan hafıza kullanımına, daha yavaş
çalışmaya, büyük boyutlu .exe dosyalarına, hatalara ve
zaman kaybına neden olurlar. İşte bu yüzden,
programınızdaki tüm ölü kodlardan kurtulmak önemli bir
aşamadır.
Sabit uzunluklu String kullanmayın
Sabit uzunluklu string değişkenler, genellikle
değişken uzunluklu olanlarından daha fazla hafıza
harcarlar. Eğer çok uzun stringler ile uğraşıyorsanız
bu, içinden çıkılamayacak bir hal alacaktır.
VB.NET bu tür bir tanımlamayı kabul etmediği için daha
hızlı işlem yapabilmenizi sağlamaktadır.
Statik değişkenler kullanmayın
Statik değişkenler, programın çalışma süresince
hafızaya yerleşen ve orada kalan değişkenlerdir. Statik
değişkenlerin karşıtı dinamik değişkenlerdir. Dinamik
değişkenler, prosedür seviyesinde değişkenlerdir;
prosedür çağırıldığında oluşturulur, prosedür sona
erdiğinde yok edilirler.
Peki değişkenin statik ya da dinamik olduğunu nereden
bileceğiz?
| |
Değişkenler |
Diziler (array) |
| Statik |
1.
Declarations
kısmında tanımlanan değişkenler.
2. Static ifadesiyle
tanımlanan değişkenler. |
1.
Declarations
kısmında boyutuyla tanımlanan diziler. Örneğin:
Dim Dizi(1 To 45)
2. Static ifadesiyle
tanımlanan yerel diziler. |
| Dinamik |
Yerel (local)
değişkenler. |
1.
Declarations
kısmında boyutsuz olarak tanımlanan diziler.
Örneğin:
Dim MyArray()
2. Dim veya Redim ifadeleri kullanılarak tanımlanan
yerel diziler. |
Yerel olarak bahsedilenler bir prosedür içerisinde
tanımlananları ifade etmektedir.
Statik değişkenler yavaştır ve fazla hafıza tüketirler.
Bunların yerine, normal dinamik değişkenleri kullanmak
daha faydalıdır.
Eğer gerçekten statik değişkene ihtiyaç duyarsanız, bunu
modül seviyesinde tanımlayarak yapmalısınız.
Kullandıktan sonra hafızayı boşaltın
Eğer statik değişken kullanıyorsanız, rezerve edilen
hafıza ile işiniz bittiğinde onu serbest bırakmak önemli
bir hal alır. Dinamik değişkenlerde bu önemsenecek bir
sorun değildir çünkü işleri bittiğinde yokedilirler.
Aşağıdaki tabloda bazı değişken türleri için hafıza
boşaltma yöntemleri verilmiştir. Diziler tablodan sonra
incelenecektir.
| Değişken Türü |
Serbest bırakma
metodu |
| Değişken uzunluklu string |
String = vbNullString |
| Variant |
Variant = Empty |
| Form |
Unload MyForm |
| Object (Nesne) |
Set MyObjectVariable = Nothing |
Diziler için hafıza boşaltma
Diziler çok hafıza harcarlar. Özellikle de sabit
uzunluklu, çalışma süresince hafızada kalan diziler. Bu
yüzden, dinamik diziler hafıza optimizasyonu için daha
elverişlidirler, çünkü yeniden boyutlandırılabilirler.
Diğer taraftan bazı yöntemler her ikisi için de
kullanılabilirler.
Bir yöntem, bu dizilerin elemanlarını tek tek
temizlemekten ibarettir. Diğer bir yöntem ise
Erase veya ReDim kullanmaktır.
- Erase dinamik dizilerde kullanılan hafızayı
temizler. Statik dizilerde bu yöntem kısıtlıdır, yani
elemanlarını bir bir silmek ile eşdeğerdir.
- ReDim ise sadece dinamik diziler için
kullanılır. Redim kullanarak dinamik bir diziyi
kolayca yeniden boyutlandırabilirsiniz.
Değişkenlerinizi belirleyin
VB'nin varsayılan veri tipi variant'dır.
Tanımlanmamış her değişken variant tipinde demektir.
Varian değişkenler yavaştır ve hafıza tüketirler.
Örneğin, integer tipi yerine variant tipi
kullanırsanız, fazladan 14 byte harcamış olacaksınız. Bu
kayıp, büyük projelerde çok daha fazla olabilir. Integer
tipi, variant'dan daha hızlıdır. Özellikle For...Next
döngülerinde çok önemlidir.
Programlarınızın başında Option Explicit ifadesini
değişkenlerinizi tanımlamayı hatırlatmak için kullanın.
Bu gereksiz yere variant kullanmanızı engelleyecektir.
(Ayrıca Visual Studio'da Tools>Options yolunu
izleyerek "Require variable declariaton" seçeneğini
işaretlediğinizde tanımlanmamış değişkeniniz
kalmayacaktır.
Resimler için hafıza optimizasyonu
Resimler çok fazla hafıza kullanarak programınızı
yavaşlatabilirler. İşte birkaç küçük ipucu:
- Hafızayı LoadPicture() ve Cls kullanrak ayarlayın.
Ayrıca Picture özelliğini Nothing ifadesine
eşitleyebilirsiniz. (VB 4.0 ve yukarısı).
- PictureBox yerine Image kontrolü kullanın.
- Bir resmi sadece bir defa yükleyin. Eğer bu resmi
birden fazla yerde kullanma ihtiyacı duyarsanız bunu
sadece diğer kontrole atayarak yapabilirsiniz:
Alan2.Picture = Alan1.Picture
Bu sayede resmi bir kez yükleyip istediğiniz kadar
kullanabilirsiniz.
- AutoRedraw = False
haline getirin.Aksi halde VB hafıza tüketen bir
AutoRedraw resmi yaratcaktır.
|
|