Desidero calcolare il tempo in millisecondi richiesto dall'esecuzione di parte del mio programma. Ho cercato online, ma non ci sono molte informazioni su questo argomento. Qualcuno di voi sa come farlo?Calcolo del tempo trascorso in un programma C in millisecondi
risposta
Le librerie C hanno una funzione che consente di ottenere l'ora del sistema. È possibile calcolare il tempo trascorso dopo aver catturato i tempi di inizio e fine.
La funzione è chiamata gettimeofday() e puoi guardare la pagina man per scoprire cosa includere e come usarlo.
Su Windows, si può solo fare questo:
DWORD dwTickCount = GetTickCount();
// Perform some things.
printf("Code took: %dms\n", GetTickCount() - dwTickCount);
Non è la soluzione più generale/elegante, ma bello e veloce quando ne avete bisogno.
La funzione gettimeofday
restituisce il tempo con precisione microsecondo (se la piattaforma può supportare che, ovviamente):
Il gettimeofday() funzione è ottenere l'ora corrente, espressa come secondi e microsecondi dal l'epoca e memorizzarla nella struttura temporale puntata da tp. La risoluzione dell'orologio di sistema è non specificato.
'gettimeofday' isn È ideale per misurare il tempo trascorso tra due eventi, perché l'orologio del sistema può essere modificato tra gli eventi (ad esempio mediante un aggiornamento NTP o semplicemente un'azione dell'amministratore). (A volte però * è * la cosa migliore disponibile, però). – caf
Un'altra opzione (almeno su alcuni UNIX) è clock_gettime e relative funzioni. Questi permettono l'accesso a vari orologi in tempo reale e puoi selezionare uno di quelli a risoluzione più alta e gettare via la risoluzione che non ti serve.
In particolare, l'orologio 'CLOCK_MONOTONIC', se il sistema su cui si sta lavorando lo supporta (' sysconf (_SC_MONOTONIC_CLOCK)> 0'). – caf
modo migliore per rispondere è con un esempio:
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/* Return 1 if the difference is negative, otherwise 0. */
int timeval_subtract(struct timeval *result, struct timeval *t2, struct timeval *t1)
{
long int diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
result->tv_sec = diff/1000000;
result->tv_usec = diff % 1000000;
return (diff<0);
}
void timeval_print(struct timeval *tv)
{
char buffer[30];
time_t curtime;
printf("%ld.%06ld", tv->tv_sec, tv->tv_usec);
curtime = tv->tv_sec;
strftime(buffer, 30, "%m-%d-%Y %T", localtime(&curtime));
printf(" = %s.%06ld\n", buffer, tv->tv_usec);
}
int main()
{
struct timeval tvBegin, tvEnd, tvDiff;
// begin
gettimeofday(&tvBegin, NULL);
timeval_print(&tvBegin);
// lengthy operation
int i,j;
for(i=0;i<999999L;++i) {
j=sqrt(i);
}
//end
gettimeofday(&tvEnd, NULL);
timeval_print(&tvEnd);
// diff
timeval_subtract(&tvDiff, &tvEnd, &tvBegin);
printf("%ld.%06ld\n", tvDiff.tv_sec, tvDiff.tv_usec);
return 0;
}
- 1. Tempo trascorso programma in esecuzione
- 2. Tempo trascorso calcolo
- 3. /usr/bin/tempo --format uscita tempo trascorso in millisecondi
- 4. Come si ottiene il tempo trascorso in millisecondi in Ruby?
- 5. Misurazione del tempo CPU trascorso in Julia
- 6. Tempo trascorso (Objective-c)
- 7. Calcolo del tempo futuro in C#
- 8. Tempo trascorso dall'avvio dell'applicazione
- 9. mclapply tempo utente maggiore del tempo trascorso
- 10. Misurazione del tempo trascorso in python
- 11. Calcolo del tempo trascorso in un dato livello quando quel livello cambia
- 12. C++ crono tempo di sistema in millisecondi, operazioni di tempo
- 13. `gprof` tempo trascorso in particolari righe del codice
- 14. Calcolo del tempo con il codice C++
- 15. Netbeans - Tracciamento del tempo trascorso nel progetto
- 16. Calcolo del tempo di funzionamento in nanosecondi nel codice C
- 17. Come ottenere il tempo corrente in millisecondi in C Programming
- 18. CABasicAnimation corrente tempo trascorso
- 19. tempo trascorso da JVM
- 20. Ottenere il tempo trascorso in Qt
- 21. Scopri quanti millisecondi ha eseguito un programma C# nel debugger
- 22. Determinazione degli intervalli di tempo in millisecondi in cacao
- 23. Misura il tempo trascorso tra due MotionEvents in Android
- 24. Tempo di registrazione del sistema Apple in millisecondi?
- 25. Errore di millisecondi durante il richiamo del tempo in R
- 26. Come ottenere 'millisecondi' come parte del tempo in perl?
- 27. Come misurare il tempo totale trascorso in una funzione?
- 28. Calcolo della complessità del tempo
- 29. Tempo di calcolo! =
- 30. Prendi tempo Unix millisecondi
rimarcato più in linea con la convenzione. – dmckee
hm ... non ho risposto a questa domanda una settimana fa: http://stackoverflow.com/questions/1444428/time-stamp-in-the-c-programming-language/1445808#1445808 – Christoph