Programowanie "na skróty"
Programowanie "na
skróty"
Mając w ręku
takie ogromne narzędzie jak Visual Basic, często nie zdajemy sobie sprawy,
jakie popełniamy błędy. Mniej rozpowszechnione metody projektowania, chociaż
prostsze i szybsze, zostały odrzucone w ciemny kąt pokoju. Tak, tak, mówię o
tym, że wielu z nas używało i może nawet używa potwornie skomplikowanych
określeń prostych procesów. Spotkałem się kiedyś z kodem programu (ściągniętego
z internetu) w którym zastosowano dosłownie drogę okrężną. W tedy
przypomniałem sobie, że sam też tak kiedyś robiłem... Ale nastąpił
moment, kiedy to się skończyło. Kolega, programujący w Borland C++ Builderze,
który wcześniej programował w VB twierdzi bezustannie, że "Viżual
Bejzik to szmira". Ma częściowo rację, ale powinien mieć on trochę
szacunku, ponieważ to ja wprowadziłem go w programowanie w VB. Dawniej on
programował w Pascal'u, czy w DOS'owskim C++.
Owy kolega nie
poznał jeszcze do końca VB, a już niby wie z czym to się je. On tak samo jak
ja kiedyś pisał programy okrężną drogą. Dopiero w BC++B nauczył się
profesjonalnie układać kod.
W tym artykule
dowiesz się jak programować łatwiej, i aby program wykonywał się szybciej.
A jak to zrobić?
Kompilator
ponad wszystko
Visual Basic 5 był
pierwszą wersją języka VB posiadającą możliwość kompilacji do kodu
maszynowego (Native) i Pseudo-Code. Pseudo-Code, to kod wymagający
interpretowania w czasie działania.
Kod maszynowy nie
wymaga dodatkowej interpretacji w czasie działania. Jest on więc szybszy niż
P-Code, lecz aplikacje kompilowane do p-kodu są mniejsze niż ich odpowiedniki
kompilowane do kodu maszynowego. Należy więc się zdecydować, czy program ma
być szybszy czy mniejszy. Oto zestawienie porównawcze obu metod (w sekundach):
Test
P-kod
Maszynowy kod
Maszynowy + opcje
Grafika
3.84
3.84
4.01
Licznik typu Variant
12.85
10.77
10.38
Licznik typu Long
2.74
0.44
0.05
Licznik typu Double
4.95
1.98
1.60
Ekran logo
1.32
1.27
1.26
Kopiowanie napisów
0.28
0.27
0.27
(źródło:
Visual Basic 6 - księga eksperta, wyd. Helion)
Windows
API
Od
dawna programiści VB wykorzystują funkcji Windows API dla poprawienia wydajności
swoich programów. Funkcje API są dużo szybsze niż ich odpowiedniki w VB. Na
szczególną uwagę zasługują funkcje graficzne jak i te pracujące na
tablicach i kolekcjach.
Ograniczenie
ilości odwołań do obiektów
Każde
odwołanie do obiektu to spora porcja wysiłku dla programu. Poza odwołaniem, używane
są inne interfejsy, np. OLE. Przykładem może być
Me.Caption
= "Programik"
Wielokrotne
użycie tego samego zapisu powołuje odwołanie do obiektu Me, jakim jest np.
Form1. Aby uniknąć wielokrotnego odwołania tworzymy oddzielny obiekt który będzie
referencją Me.Caption:
Set
FCap = Me.Caption
FCap
= "Programik"
W
ten sposób możemy postąpić z innymi obiektami.
Wcześniejsze
łączenie
Metoda
ta jest ułatwieniem do tworzenia obiektu poprzez zdefiniowanie tego obiektu w
czasie jego deklaracji. Np. wcześniejsze łączenie (działające szybciej):
Dim
Exc As Excel.Application
ma
swój odpowiednik w późniejszym łączeniu:
Dim
Exc As Object
Set
Exc = CreateObject("Excel.Application")
Obie
metody powodują to samo, lecz wcześniejsze łączenie daje kompilatorowi do
zrozumienia z czym ma do czynienia i sprawdza metody danego obiektu co powoduje
szybszą obsługę programu.
Optymalizacja
typów danych
Po
pierwsze, nie należy stosować (a przynajmniej należy unikać) danych typu
Variant, bo one zajmują bardzo dużą ilość pamięci operacyjnej. Powinno się
jak najmniej stosować typów danych zmiennoprzecinkowych, czyli Single, Double,
Currency itd. dla zastosowań np. w licznikach pętli.
Optymalizacja
operacji wejścia/wyjścia
Aby
przyspieszyć czytanie pliku, należy ładować plik (lub jakąś jego część,
blok) do tablicy, zamiast ładować poszczególne jego wiersze/bajty. W tedy
wczytamy plik do buforu w pamięci operacyjnej.
Pamięć
Należy
nadawać nieużywanym obiektom wartość Nothing, aby zwolniły one zasoby pamięći.
Tablice
W
miarę możliwości stosuj tablice o przewidywalnych wymiarach.
Funkcje
wbudowane
Not
Zamiast
korzystać z następującego kodu:
Dim
bool As Boolean
If
bool = True Then
bool = False
Else
bool = True
End
If
Stosuj
Not:
Dim
bool As Boolean
bool
= Not bool
Rezultat
jest ten sam, lecz Not jest szybszy. To samo możesz stosować dla liczb. W tedy
Not zwróci przeciwną (liczbę + 1).
StrReverse
Nie
trzeba pisać oddzielnej funkcji, by odwrócić String (w VB6), ale można użyć
funkcję StrReverse.
<-DoogiE->
marcin.porebski@interia.pl
Wyszukiwarka
Podobne podstrony:
ART5 (19)ART5 (15)ART5 (14)ART5 (18)art5 (17)art5ART5 (5)art5art5ART5 (7)więcej podobnych podstron