For i = 0 To 10
Text1.Left = Label1.Left Next 'Riscritto in questo modo e molto piu veloce: Dim L As Integer L = Label1.Left For i = 0 To 10 Text1.Left = L Next 'Analogamente il codice Do Until EOF(f) Line Input #f, nl Text1.Text = Text1.Text + nl Loop 'puo essere riscritto in questo modo per ottimizzare la velocita : Dim buf As String Do Until EOF(f) Line Input #f, nl buf = buf + nl Loop Text1.text = buf 'Notare che nel codice scritto con i cicli For...Next, nel Next non e stata 'specificata la variabile usata nel For, questo perche omettendo la specifica 'della variabile si ottiene un aumento della velocita nei cicli. 'Tutte le operazioni con le stringhe sono lente, molto piu lente di quelle 'tra interi; per questo motivo devono essere evitate se possibile. 'Vediamo qualche esempio : Select Case mkey$ Case "A": Call PrimaSub Case "B": Call SecondaSub End Select 'Si puo riscrivere il codice in modo piu efficiente : Select Case Asc(mkey$) Case 65: Call PrimaSub Case 66: Call SecondaSub End Select 'Analogamente, per decidere se un carattere a una lettera A-Z si usa 'scrivere : If (k$ >= "A" And k$ <= "z") then 'ma si puo ottenere un aumento di esecuzione con : k% = Asc(k%) If (c% >= 65 And c% <= 90) then 'Nel testare una stringa nulla e piu efficiente scrivere : If Len(k$) = 0 Then 'in luogo della piu classica : If k$ = "" Then 'L'utilizzo delle funzioni dette nude puo peggiorare la velocita del 'vostro codice. Per funzioni nude si intendono tutte quelle funzioni 'utilizzate per le stringhe senza la dichiarazione del segno (tipo) $. 'Alcune delle funzioni nude sono: Chr, ChrB, CurDir, Date, Dir, Error, Format Hex, Input, LCase, Left, LeftB, Mid, MidB Oct, Right, RightB, RTrim, Space, Str, String Time, Trim, UCase 'queste funzioni attendono come parametri dei Variant e riportano un valore 'Variant. Utilizzando la dichiarazione del tipo $ le funzioni attendono e 'riportano valori Stringa. I valori stringa sono piu veloci dei valori 'variant. Quindi le funzioni dichiarate nel seguente modo sono piu efficienti 'delle precedenti: Chr$, ChrB$, CurDir$, Date$, Dir$, Error$, Format$ Hex$, Input$, LCase$, Left$, LeftB$, Mid$, MidB$ Oct$, Right$, RightB$, RTrim$, Space$, Str$ String$ Time$, Trim$, UCase$ 'Ottimizzare la velocita di visualizzazione 'La velocita di visualizzazione grafica ed altre operazioni simili c 'ontribuiscono molto all'impressione sulla velocita dell'applicazione. 'In molti casi si puo far sembrare un'applicazione piu veloce semplicemente 'facendo in modo che i form vengano ridisegnati piu velocemente, anche se 'la velocita effettiva dell'applicazione non e cambiata. Ci sono molte 'tecniche per aumentare la velocita apparente : '* Impostando la proprieta ClipControls a FALSE '* Usare i controlli Image al posto dei controlli Picture. '* Nascondere i controlli quando si imposta piu di una proprieta, per evitare 'di ridisegnarli piu volte. 'Se non si utilizzano metodi grafici (Line, PSet, Circle e Print) e meglio 'impostare la proprieta ClipControls a FALSE. I controlli Image richiedono 'meno tempo dei controlli Picture per essere ridisegnati e occupano meno 'risorse. Se non si ha bisogno delle caratteristiche uniche del controllo 'Picture e meglio usare i controlli Image. 'Altri metodi per migliorare le prestazioni si possono trovare utilizzando 'le API. Si possono scoprire soluzioni nel codice che sembrano buone una volta pensate, ma che in pratica sono dei pesi enormi per l'elaborazione da parte della CPU. L'impostazione delle proprieta puo generare degli eventi, e se c'e molto codice nelle procedure relative puo succedere che il codice generi un tempo di attesa lungo. I programmi si possono ottimizzare in base a varie caratteristiche, due delle piu' importanti sono : Velocita reale. Velocita di visualizzazione Ottimizzare la velocita reale Conviene utilizzare sempre le variabili intere quando e possibile, o long, specialmente all'interno dei cicli For...Next, Do...Loop, impostando anche la proprieta ScaleMode a Twips o Pixel. Se il valore di una proprieta non cambia nel corso di una procedura, conviene leggerne il valore una volta sola assegnando il valore della proprieta ad una variabile e utilizzare quest'ultima. Le variabili sono molto piu veloci delle proprieta. Per esempio questo pezzo di codice e molto lento : |