|
- 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 >
String Optimizasyonu >
Bölüm 4
Bölüm 1 >
Bölüm 2 >
Bölüm 3String
Değerlerde Karşılaştırma Yapmak
String değerleri birbiri ile kıyaslamak umduğunuzdan
daha uzun sürebilir. İşte işinize yarayacak birkaç
ipucu:
İlk harfi karşılaştırma
İşte optimize edilmemiş iki yöntem:
If Left$(Text$, 1) = "A" Then
ve
Select Case Left$(Text$, 1)
Case "A"
Case "B"
End Select
Ve işte daha hızlı alternatifleri:
If LenB(Text$) <> 0 Then
If AscW(Text$) = 65 Then
If LenB(Text$) <> 0 Then
Select Case AscW(Text$)
Case 65 ' AscW("A")=65
Case 66
End Select
Left$() yerine
AscW() fonksiyonunu
çağırmak ve sonra kıyaslamak daha hızlıdır. Ayrıca boş
bir string üzerinde AscW()
uygulamak, hata oluşmasına neden olur. Bu olasılığı da
düşünerek önce LenB()
ile kontrol etmeliyiz.
Diğer taraftan Select Case yapısı programınıza daha
fazla artı sağlayacaktır.
Ortadaki bir harfi karşılaştırma
Yukarıdaki ipucuna benzer bir şekilde, bu da ortada
bir yerdeki bir harfi karşılaştırmak için kullanılır.
If AscW(Mid$(Text$, index)) =
65 Then
Burada unutulmaması gereken, index değerinin Len(Text$)
değerinden küçük olması şartıdır. Aksi halde bir hata
ile karşılaşırsınız. Bu durum sağlanırsa, Mid$(, index,
1) yerine Mid$(, index) çağırmak daha faydalıdır.
Binary değer karşılaştırma
Kullanabildiğiniz her yerde binary karşılaştırmayı
kullanmalısınız. Eğer küçük/büyük karakter duyarsız
StrComp() işnizi görüyorsa, onun yerine daha hızlı olan
şu halini kullanabilirsiniz.
StrComp(Text1$, "abc",
vbTextCompare) ' Daha Yavaş
StrComp(LCase$(Text1$), "abc", vbBinaryCompare) ' Daha
Hızlı
InStrB() ile karşılaştırma
InStr fonksiyonu, bir string değerini bir diğeri
içerisinde bulmaya yarayan faydalı bir fonksiyondur.
Diğer taraftan InStrB versiyonunda bir optimizasyon söz
konusudur. Eğer sadece, içinde geçip geçmediğini kontrol
edecek, nerede olduğunu önemsemeyecek iseniz, şu kodu
kullanabilirsiniz:
If InStrB(Text$, SearchFor$) <>
0 Then
Ancak InStrB()
fonksiyonu kavraması zor bir fonksiyondur. Eğer tam
olarak nasıl işlediği öğrenilmeden kullanılırsa hatalara
neden olabilir.
Like ile karşılaştırma
Like operatörü hızlı çalışan bir çözüm değildir.
Bunun yerine alternatif yöntemleri deneyebilirsiniz.
Aşağıda kullanımına örnek verilecektir.
If Text$ Like "*abc*" Then ->
If InStrB(Text$, "abc") <> 0 Then
Eğer InStrB() kullanımı
zor geliyor ise InStr()
fonksiyonunu deneyebilirsiniz.
Bölüm 2 >
Bölüm 3 >
Bölüm 4
|
|