2017-02-03 20 views
0

я назвал «сон» функцию, но, кажется, на самом деле не подсчитывал, как это:Выполняет ли функция «clock()» функции linux в режиме «сна» процесса?

#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; 
} 

Он печатает очень небольшое количество миллисекунды интервала времени между 2 часами «()» звонками. Я ожидал, что он должен сообщить о 2 000 000.

Является ли мое предположение правильным? man не задает никакого ответа на мой вопрос. Есть ли лучшая функция для получения времени, прошедшего между двумя строками кода?

+0

использования gettimeofday() – alex

ответ

1

clock(3) не возвращает секунд, он возвращает количество использованных секунд, деленное на CLOCKS_PER_SEC (значение 1000000).

В C++, вы, вероятно, хотите использовать

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; 

Не забудьте компилировать с -std=c++11