Je veux savoir pendant combien de temps (approximativement) un bloc de code s'exécute. Quelque chose comme ceci :
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
Comment ?
Je veux savoir pendant combien de temps (approximativement) un bloc de code s'exécute. Quelque chose comme ceci :
startStopwatch();
// do some calculations
stopStopwatch();
printf("%lf", timeMesuredInSeconds);
Comment ?
Vous pouvez utiliser le time.h et plus particulièrement la bibliothèque temps y temps différé fonctions :
/* difftime example */
#include <stdio.h>
#include <time.h>
int main ()
{
time_t start,end;
double dif;
time (&start);
// Do some calculation.
time (&end);
dif = difftime (end,start);
printf ("Your calculations took %.2lf seconds to run.\n", dif );
return 0;
}
(Exemple adapté de la page web difftime dont le lien figure ci-dessus).
Veuillez noter que cette méthode ne peut donner que des secondes de précision - time_t
enregistre les secondes écoulées depuis que le Époque UNIX (1er janvier 1970).
Parfois, il est nécessaire de mesurer temps astronomique plutôt que Temps CPU (notamment ce qui est applicable sur Linux ):
#include <time.h>
double what_time_is_it()
{
struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
return now.tv_sec + now.tv_nsec*1e-9;
}
int main() {
double time = what_time_is_it();
printf("time taken %.6lf\n", what_time_is_it() - time);
return 0;
}
J'utiliserais le Compteur de performance des requêtes y Fréquence d'exécution des requêtes des fonctions de l'API Windows. Appelez la première avant et après le bloc et soustrayez (current - old) pour obtenir le nombre de "ticks" entre les instances. Divisez ce nombre par la valeur obtenue par la dernière fonction pour obtenir la durée en secondes.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.