Précision à la milliseconde sous Linux
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:
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:
Code:
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. |
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.
Quelqu'un saurait-il pourquoi ?
NB: la pause usleep est juste là pour éviter que sa aille trop vite