Bonjour,
Comment mesurer précisement le temps d'exécution d'une fonction en C++ pur. Je cherche une fonction généraliste (pas une fonction de l'API windows).
Merci d'avance!
Cordialement,
Rodrigue
Bonjour,
Comment mesurer précisement le temps d'exécution d'une fonction en C++ pur. Je cherche une fonction généraliste (pas une fonction de l'API windows).
Merci d'avance!
Cordialement,
Rodrigue
Avec quelle précision ? - sachant que la fonction peut être interrrompue par l'OS qui donne le CPU à un autre thread -
Bon n'exagérons pas mais la milliseconde serait parfait...
Je ne veux pas le centième de millionième de seconde!
Si tu veux un timer précis il faudra de toute façon passer par une fonction de l'OS. Tu peux aussi chercher du côté de RDTSC, il y a un tuto qui en parle ici si je me souviens bien.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
J'ai regardé du côté de RDTSC mais ça ne m'intéresse pas vraiment...
Que puis-je utiliser d'autres alors (même si c'est spécifique windows) ?
Il y'a les apis QueryPerfomanceCounter et GetProcessTimes.
QueryPerformanceCounter est plus précis je pense.
Puis-je utiliser time_t ?
Je me suis fait une petite classe très simple qui me permet de mesurer des temps:
.h
.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 #ifndef Chrono_H #define Chrono_H #include <time.h> #include <stdio.h> #include <sys/types.h> #include <sys/timeb.h> #pragma once class Chrono { public: Chrono(void); ~Chrono(void); time_t Start(void); time_t Stop(void); time_t TimeElapsed(void); private: time_t t1, t2; }; #endifVous en pensez quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include "StdAfx.h" #include "Chrono.h" Chrono::Chrono(void) { } Chrono::~Chrono(void) { } time_t Chrono::Start(void) { return time(&t1); } time_t Chrono::Stop(void) { return time(&t2); } time_t Chrono::TimeElapsed(void) { return (t2 - t1); }
Quand je fais un, je n'obtiens pas un temps vraiment précis ... Comment faire pour afficher le temps avec plus de précision ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::cout << chrono->TimeElapsed << std::endl
Partager