View Full Version : [C] Calcolare il tempo trascorso tra un'operazione e l'altra
Devo fare la cosa in topic, pensavo che si potesse fare tipo:
(butto giù il codice)
time_t t1,t2;
float dif=0;
quando viene fatta la operazione 1 faccio anche time(&t1);
quando viene fatte l'operazione 2 faccio time(&t2);
poi faccio dif=difftime(t2,t1);
Da quello che ho letto in giro in teoria la difftime mi dovrebbe dare la differenza in secondi invece quando la stampo con printf("%f",dif); mi stampa tutti 0.00000.
Mi sapete dire perchè o un modo alternativo per fare questa cosa?
Da quello che ho letto in giro in teoria la difftime mi dovrebbe dare la differenza in secondi invece quando la stampo con printf("%f",dif); mi stampa tutti 0.00000.
Mi sapete dire perchè o un modo alternativo per fare questa cosa?
Ciao, perché la funzione time() ha una risoluzione di 1 secondo, ti restituisce il numero di secondi interi trascorsi dalle 00:00:00 del 01/01/1970 (UTC).
Alternative ce ne sono ma non sono "portabili", nel senso che dipendono dal sistema operativo.
In ambiente Windows ci sono diversi modi per ottenere l'informazione del tempo con risoluzione inferiore al secondo. La più semplice è la funzione Win32 GetTickCount(), leggi <qui> (http://msdn.microsoft.com/library/en-us/sysinfo/base/gettickcount.asp) . In ambiente Linux esiste invece la funzione gettimeofday().
sottovento
05-12-2005, 15:58
Un'alternativa e' quella di continuare ad utilizzare la time(), a patto che tu possa ripetere l'operazione. Spesso e' possibile.
E' chiaro che se metti l'operazione/sequenza di operazioni in un ciclo che la ripete 1000000 di volte (ammesso, ovviamente che sia possibile), la time() ti dara' i microsecondi...
Quando posso, uso questo sistema che mi permette di evitare di capire come si chiamano oggi le primitive di timing sul sistema in uso... :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.