IncreasePerf




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 :










( increaseperf.html )- by Paolo Puglisi - Modifica del 17/12/2023