ďťż

optymali

Lemur zaprasza

Optymalizacja w VB



1) Bardzo często nie deklarujemy zmiennym,
a jak już to piszemy : Dim zmienna Jaki efekt ??? Być może wygoda, ale zmienna niezadeklarowana
lub zadeklarowana bez typu to zmienna Variant, która zajmuje w pamięci aż 16 bajtów
!!! Do pętli typu



For a=1 to 30

...

Next a



Zmienna a może być nawet typu byte (tylko 1 bajt). Najczęściej
deklaruję zmienne jako integer Operacje matematyczne na zmiennych typu
Variant są wolniejsze niż na zmiennych typu Integer. . Poniżej przedstawię zmienne od
tych na których operacje matematyczne są najzybsze do najwolniejszych :


    lLongl
    lIntegerl
    lBytel
    lSinglel
    lDoublel
    lCurrencyl
    lVariantl


Jak widać, im zmienna bardziej pojemnościowa tym wolniejsza (są wyjątki). Dlaczego
zmienna Variant jest najwolniejsza ??? No bo jest najbardziej uniwersalna, ale wadę tego
jest że do każdej operacji na niej komputer musi jakby ją przystosować. Nie będę
tego tłymaczył specjalnie, bo chyba każdy wie, że Variant mimo swej elastyczności
zajmuje dużo pamięci i jest wolny. Dlaczego zajmuje dużo pamięci ?? Załóżmy, że
deklarujemy 1000 zmiennych Variant (16000 B = ok. 15 KB) Zamiast tego można by było
zadeklarować zmienne integer (2x1000 = 2000 B = ok. 2KB) Tak więc zyskujemy 13 KB
pamięci RAM !!! Nie jest to specjalnie dużo, ale już coś, no i obliczenia są szybciej
wykonywane



2) Można sporo zaszczędzić pamięci jeżeli wywalimy z pamięci niepotrzebne już
nam formularze. Załóżmy, że nasza aplikacja ma SplaschScreen. Jak się już aplikacja
uruchomi, to po co jej jest SplastScreen ??? Tylko zajmuje pamięć a można go usunąć
za pomocą instrukcji UNLOAD



3) Jeżeli nasza aplikacja ma dużo instrukcji w procedurze Form_Load, to może by dać
złudzenie, że ma ich mniej ??? Wystarczy utworzyć Timer dać mu mały interwał (np 5)
i przrzucić do niego parę procedurek (nie za dużo). Dlaczego ??? Bo formularz nie
zostanie pokazany, dopóki wszystkie polecenia z procedury Form_Load nie zostaną
wykonane. Tak użytkownik ma złudzenie, że się program szybciej załadował (trzeba
pamiętać aby ostatnia instrukcja w timerze była taka :Timer1.Enalbed=False
). Nie można dać zbyt wielu instrukcji, bo użytkownik
aplikacja się skapnie, że coś jest nie tak (ale zanim on myszą najedzie na jakiś
command button, to minie np. sekunda) Można właśnie to wykorzystać, ale ostrzegam nie
należy przesadzać !!! Kod powinien być wykonywany w Timerze nie dłużej niż sekundę
a nawet krócej w zależności od rodzaju aplikacji.



4) Można dać jakiegoś ProgressBara. Przynajmniej użytkownik
będzie wiedział, że program nie stanął (jednak im więcej wywołań do niego tym
wolniejszy program, więc trzeba dobrać samemu współczynnik) ProgressBar ma cechę Max
dzięki której nie musisz przeliczać wartości na procenty



5) Czasem można tak pomanipulować kodem, aby nie był cały w
unkcji Load. Chodzi o to, że np. wybierając jakąś opcję trzeba przed tym przetworzy
kilka informacji (np. przed pokazanie formularza X który jest dostępny po kliknięciu w
jakiś tam Command Button) można te informacje przetworzyć wtedy kiedy się klika.
Trzeba tylko dać odpowiednie zabezpieczenie aby za każdym kliknięciem nie przetwarzać
tych informacji. W ten sposób można odciążyć procedurę Form_Load a użytkownik chyba
nie zauważy, jak klikając w przycisk pokaże się formularz X 0,3 s później. Oto
przykładowy kod, przycisku :



IF Command1.Tag="" Then

Command1.Tag="x"

... Tu informacje do przetworzenia

End If

X.Show



Jak widać dzięki takim sztuczką przyśpieszymy program a raczej jego ładowanie.
Jednak nie należy przesadzać (chyba że jesteś ogrodnikiem)



6) Jeśli chcesz zmniejszyć rozmiar pliku EXE, to dając grafikę do PictureBox'a
upewnij się, że nie da się jej bardziej skompresować. Zapisz ją w kilku formatach
(najlepiej GIF, JPG) i o gorszych parametrach (czasem nie widać różnicy) Jeśli program
mniej miejsca zajmuje, to i krócej ładuje się do pamięci RAM z czego wynika, że
krócej się uruchamia (najlepiej jest zapisywać obraz w mneijszej liczbie kolorów. Jak
nasz rysunek ma 2 kolory, to po co go zapisywać w 16 milionach ???). Nie będę
tłumaczył kiedy zapisywać w formacie GIF a kiedy w JPG



To tylko kilka z wielu pomysłów. Jeśli coś wymyśliłeś, to napisz. Zawsze mogę
to opublikować !!!



Jelcyn

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza