Newsgroup: it.comp.lang.visual-basic
Titolo: [?]analisi durata esecuzione routine

Ciao
Ho utilizzato questo metodo per fare alcune valutazioni sulla durata in
termini di tempo delle  funzioni e routine di una mia applicazione:
all'inizio e alla fine di tutte le routine e le funzioni esistenti  ho messo
una chiamata ad un'altra funzione RegTime così composta:
Public Sub RegTime(stato,NomeFunzione)
    'la variabile in ingresso stato identifica se la funzione inizia o
finisce
    Dim Tempo as Double
    Dim Nome as String * 30
    Dim Stato1 as String * 7
    Tempo = Time
    Open App.Path & "\regtime.txt" For Append as #1
    Write #1 Nome, Stato1, Tempo
    Close #1
End Sub
Ottengo un file di testo così composto:
ControllaErrori                  Inizio      75365,65
ControllaErrori                  Fine       75365,69
ScriviDati                          Inizio      75365,69
ScriviDati                          Fine       75365,75
etc.                                    ...            ...
etc.                                    ...            ...
Importo questo file (più o meno 600 righe) in excel per fare delle
statistiche sulla durata di esecuzione di ogni routine al fine di
ottimizzarne il codice. Mi accorgo però che su più analisi fatte i dati non
sono proprio gli stessi (con il PC nelle stesse condizioni ).
A cosa è dovuta la differenza  di tempo (a volte significativa) che ci mette
il PC ad eseguire un'operazione in 2 momenti diversi?
Secondo voi ci sono metodi migliori per fare un'analisi sulla durata delle
routine?
Grazie dell'attenzione
Alx

     Dim Tempo as Date
CiaoZ
SebaMix

 la differenza...
in un post recente Faber diceva di usare la funzione GetTickCount, ma non me
la accetta; non so se per utilizzarla devo attivare qualche libreria.
Grazie


devi semplicemente inserirne il prototipo in un modulo standard; in
poche parole metti questo in modulo bas (se lo metti in un form devi
cambiare Public con Private):
Public Declare Function GetTickCount Lib "kernel32" _
    Alias "GetTickCount" () As Long
se vuoi saperne di più puoi consultare MSDN (se non ce l'hai -->
http://msdn.microsoft.com
)
Ciao
Faber

 ha scritto nel messaggio
news:9eh1ij$2upkk$1...@ID-66268.news.dfncis.de...


> La funzione Timer di vb si basa sulla stessa GetTickCount?
no, usa SetTimer()
Faber

 Faber
ehmmm scusa per la svista, credevo ti riferissi al controllo Timer  :)
cmq non credo, piuttosto credo che Timer() faccia una cosa tipo
DateDiff("s", "00:00:00", Time)
perché è riferita alla mezzanotte del giorno prima, non al momento in
cui hai avviato il sistema...
Faber


[snip]
invece di usare le funzioni di VB (che già di loro ci mettono un overhead
notevole) prova a dare un occhiata su 
http://msdn.microsoft.com
 all'articolo
Q172338 del knowledge base;
inoltre, una volta "fatto scattare il cronometro" (cioè una volta preso
l'intertempo di partenza) evita di fare qualsiasi altra operazione extra,
come ad esempio la scrittura su file;
esempio:
    ' sbagliato!
    nStart = Timer
    Print #1, "Inizio = "; nStart
    Call MySub(x, y, z)
    nEnd = Timer
    Print #1, "Fine = "; nEnd
    ' giusto
    nStart = Timer
    Call MySub(x, y, z)
    nEnd = Timer
    Print #1, "Inizio = "; nStart
    Print #1, "Fine = "; nEnd
ciao