Newsgroup: it.comp.os.linux.development
Titolo: come calcolare il tempo trascorso in millisecondi?

Salve a tutti!
Devo vedere quanto ci mette un pezzo di codice C ad essere eseguito, con
precisione dei millisecondi, ma non so come farlo. Ho provato a usare la
funzione time() in time.h, ma ha una precisione dei secondi. Il tutto
sotto linux e con gcc. Qualcuno puo'aiutarmi? Grazie come sempre.

prova con gettimeofday()


time <nome_eseguibile> puo' esserti di aiuto ?
bye
-- 
     #@@@   missinglink on slackware 7 ### 
 

sotto linux e con gcc. Qualcuno puo'aiutarmi? Grazie come sempre.
$ man gettimeofday


Se ho capito bene, hai scritto un pezzo di codice C e vorresti testare la
qualita' di quest'ultimo misurando il tempo impiegato dal processore per
eseguirlo con una precisione del millisecondo.
Penso di avere la soluzione al tuo problema.
La libreria standard ( mi riferisco all'interfaccia time.h) esporta una
funzione chiamata clock() che
fa proprio al caso tuo.
Il tipo di risultato che restituisce la funzione clock() e' una
"machine-dependent clock unit" che puo' essere convertita in secondi ( e
sottomultipli ) mediante l'uso di un cast al double:
(double) clock() / CLOCKS_PER_SEC
Quindi per misurare il tempo impiegato da un certo programma o da una parte
del suo codice, devi fare una cosa del genere:
double start, finish, elapsed;
  start = (double) clock() / CLOCKS_PER_SEC   /* inizio del conteggio */
       /*-----------------------------------------*/
       /* blocco di codice del prog da esaminare */
       /*-----------------------------------------*/
  finish = (double) clock() / CLOCKS_PER_SEC    /* fine */
elapsed = finish - start  /* tempo impiegato */
N.B.: la variabile CLOCKS_PER_SEC  e' definita nel file time.h
Spero di essere stato di aiuto,
CIAO
P.S.: chiedo scusa per avere scritto il mesg in ritardo, il fatto e' che
sono    nuovo nel NG. :-)

Pape' Satan, pape' Satan aleppe, comincio' Roberto con voce chioccia:
RO> Se ho capito bene, hai scritto un pezzo di codice C e vorresti testare la
RO> qualita' di quest'ultimo misurando il tempo impiegato dal processore per
RO> eseguirlo con una precisione del millisecondo.
RO> Penso di avere la soluzione al tuo problema.
RO> La libreria standard ( mi riferisco all'interfaccia time.h) esporta una
RO> funzione chiamata clock() che
RO> fa proprio al caso tuo.
ti sfugge una cosa: clock() non garantisce una precisione nell'ordine
del millisecondo. Non vorrei sbagliare, ma mi sembra che la precisione
di clock() dipenda dall'architettura usata, sulle macchine x86 comunque
e' di un centesimo di secondo.
da timebits.h...
/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
   presents the real value for clock ticks per second for the system. 
*/
# define CLK_TCK 100
A suo tempo per avere tempi piu' accurati avevo usato gettimeofday,
che in teoria dovrebbe avere una precisione del microsecondo
       struct timeval {
               long tv_sec;        /* seconds */
               long tv_usec;  /* microseconds */
       };
e che in pratica non ho la minima idea di quanto sia accurato :).
Oltretutto l'eventuale maggiore precisione viene sballata dal fatto
che gettimeofday ritorna il tempo "reale" mentre clock si riferisce
al tempo processore usato dal programma, che e' piu' corretto.
-- 
ciao,
Claudio