Newsgroup: it.comp.lang.visual-basic
Titolo: Rilevamento ora corrente ...

Al fine di fare un confronto tra le prestazioni (in termini di tempo) di 2
algoritmi, mi servirebbe una funzione che mi restituisca l'ora corrente con
un'elevata precisione (millesimi di secondo) ...
sapete se esiste in VB6 ?
Ringrazio tutti per il sicuro aiuto ....
                            Ciao

Ciao, se ho ben capito vuoi determinare il tempo che impiega una funzione ad
essere eseguita, giusto?
Beh, potresti utilizzare un timer.
All'inizio della funzione da cronometrare lo abiliti, e alla fine lo fermi.
Nella funzione timer (la cui proprietà interval sarà impostata a 1 millesimo
di sec.) puoi incrementare una variabile, che alla fine sarà uguale ai
millesimi di secondo passati.
Bye
--
Tango
http://www.halflifeitalia.com
ICQ: 35463931

 millesimi di secondo passati.
anche se imposti il timer a 1 ms di secondo, la routine timer non viene mica
eseguita mille volte in un secondo!
Faber

 wrote in message
J0Ka5.1688$TE6....@news.infostrada.it...

Condivido il consiglio che ti è già stato dato.
E' strano che non funzioni, logica vorrebbe che in effetti se imposti la
proprietà Interval del Timer a 1 la routine dell'evento Change del controllo
Timer venisse eseguita esattamente 1000 volte in un secondo.
Se ciò non avviene, e credo che tu ne sia sicuro, potrebbe essere dovuto ad
un problema di memoria. Far eseguire una sub 1000 volte al secondo occupa
molto il sistema che potrebbe risultare rallentato e quindi potrebbe non
eseguire la funzione il numero di volte richiesto.
Se non lo hai già fatto, prova ad avviare il programma in cui usi questo
timer quando nessuna altra applicazione è aperta. Non ti assicuro nulla, è
solo una prova.
Ciao.
Soderi Mirco.

eseguire la funzione il numero di volte richiesto.
Ma guarda che se non allochi memoria il timer mica ne consuma :)
Il problema è che il timer di VB (come quello di molti altri linguaggi) si
basa sul clock di sistema che è di circa 55 millisecondi, soglia oltre la
quale sei certo di non poter scendere con un timer standard.
Poi c'è il fatto che se il codice all'interno del timer impiega più
dell'interval stesso ti può andare anche in stack overflow, o operazioni che
si incastrano tra loro (peggio della tangenziale est alle 8 di mattina).
Ciao

...

Puoi usare la GetTickCount() prima e dopo l'esecuzione.
Occhio che se il PC sta acceso  più di 52 giorni consecutivamente la
funzione riparte da 0 e ti fa sbagliare i conti.
Ciao

sapete se esiste in VB6 ?
  Cerca l'istruzione Timer (non il controllo...), dovrebbe andare bene
per quello che vuoi fare.
  Ciao :-)
  Massimo
  Nell'indirizzo, inserire una "h" tra la "t" e la "u"
  In the address, insert an "h" between the "t" and the "u"

 Ringrazio tutti per il sicuro aiuto ....
Mi son trovato anch'io con questa necessita' e il timer di sistema
e' troppo impreciso.  Io ho risolto facendo eseguire l'algoritmo per
1000 volte contando il tempo totale delle 1000 esecuzioni.  Poi
ho diviso per 1000 e ho ottenuto il tempo del singolo calcolo con
elevata precisione.   Vedi tu se la soluzione si puo' applicare anche
al tuo caso.
--
Frogman
indirizzo e-mail corretto: 
be...@reboot.to

 Ringrazio tutti per il sicuro aiuto ....
Ti consiglio di usare la funzione Timer che ti restituisce il numero di
secondi trascorsi dall' inizio del giorno:
Dim T1 As Single, T2 As Single
...
...
T1 = Timer
    Algoritmo1
    ...
    ...
    ...
    Fine Algoritmo1
T1 = Timer - T1
T2 = Timer
    Algoritmo2
    ...
    ...
    ...
    Fine Algoritmo2
T2 = Timer - T2
Alla fine T1 e T2 conterranno i due tempi impiegati
La funzione timer non è la più precisa e so che via API è possibile ottenere
precisioni migliori.
Tuttavia, per confrontare due algoritmi come nel tuo caso, se vuio aumentare
l'accuratezza del confronto puoi eseguire più volte ogniuno dei due
algoritmi e cronometrare il tempo totale delle varie iterazioni sucessive.
--
Diego Mazzaro
"L'importante non è conoscere tante cose ma sapere dove trovarle" A.
Einstein

Ringrazio tutti per i preziosi consigli; in particolare Faber per la celere
risposta in email.
Grazie ancora
                            Davide

 per quello che vuoi fare.
L'istruzione Timer restituisce il numero di secondi (e decimi di
secondo) passati dalla mezzanotte, ma mi sembrava che qui si parlasse
di millisecondi e abbastanza precisi.
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!


The elapsed time is stored as a DWORD value. Therefore, the time will wrap
around to zero if the system is run continuously for 49.7 days.
Cio' e' vero solo se ha la sfiga di centrare il momento in cui torna a 0...
cmq dovrebbe esserci modo di verificare questa possibilita' con un confronto
tra il valore precedente e il valore successivo; peraltro pare che la dword
sia unsigned quindi rischia grosso a usarla in un linguaggio che non conosce
i tipi unsigned...
Dovrebbe prima fare un confronto di positivita', se e' negativa il conto va
aggiustato (non mi chiedere come che al momento non ho voglia di pensarci,
cmq magari un bell'AND dei due operandi con 0x7fffffff...)
Ciao,
Alessandro

GetTickCount()
non l'ora, ma il tempo che è trascorso da quando Windows è stato avviato (tanto
è lo stesso, no?)
