2017-02-03 2 views
0

J'ai appelé « fonctions du sommeil », mais ne semble pas vraiment compté, comme ceci:La fonction linux "clock()" compte-t-elle en "veille" d'un processus?

#include<iostream> 
#include<unistd.h> 
#include<time.h> 
using namespace std; 
int main(){ 
    clock_t t1=clock(); 
    sleep(2); 
    clock_t t2=clock(); 
    cout<<t2-t1<<endl; 
    return 0; 
} 

Il imprime un très petit nombre d'intervalle de temps de milliseconde entre 2 « (horloge) » appels. Je m'attendais à ce qu'il devrait rapporter 2,000,000.

A mon avis, est-ce exact? man page ne précise aucune réponse à ma question. Y at-il une meilleure fonction pour obtenir le temps écoulé entre 2 lignes de code?

+0

utilisation gettimeofday() – alex

Répondre

1

clock(3) ne renvoie pas les secondes, il renvoie le nombre de secondes utilisées, divisé par CLOCKS_PER_SEC (valeur 1000000).

En C++, vous voulez probablement utiliser

auto t1 = std::chrono::system_clock::now(); 
sleep(2) 
auto t2 = std::chrono::system_clock::now(); 
auto duration = t2 - t1; 
std::cout << duration.count() << endl; 

Ne pas oublier de compiler avec -std=c++11