Bonjour,
J'essaye de créer un timer avec une précision inférieure à la seconde, je ne souhaite donc pas utiliser la méthode time de la librairie ctime.
Par contre sur tous les forums ou je vais, la solution est d'utiliser la méthode clock.
Voici donc mon code de test
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
28
29
30
31
32
33 #include <iostream> #include <ctime> using namespace std; int main(){ int i=0; time_t start,end; start = time(NULL); clock_t init = clock(); while(i <= 1500){ end = time(NULL); usleep(1000); //Pause every milliseconds std::cout<<"Exec time : "<<end-start<<" seconds"<< endl; i++; } clock_t finish = clock(); cout<<"Clock: "<< double(clock()) << endl; cout<<"Result in millisecond: "<< (double)(finish-init)* 1000 / CLOCKS_PER_SEC << endl; end = time(NULL); cout<<"Exec time : "<<end-start<<" seconds"<< endl; }
Et j'obtiens en sortie:
Comme on peut le constater le résultat est plutôt bizzare avec un temps d'execution de 7 secondes (donc la methode time fonctionne) la methode clock me retourne n'importe 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 Exec time : 0 seconds Exec time : 0 seconds Exec time : 0 seconds ..... Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Exec time : 7 seconds Clock: 0 Result in millisecond: 0 Exec time : 7 seconds Press ENTER to continue.
Quelqu'un saurait-il pourquoi ?
NB: la pause usleep est juste là pour éviter que sa aille trop vite
Partager