2011-01-20 4 views
2

Я пытаюсь сохранить файл каждую секунду в пределах + - 100ms (ошибка 10%). Проблема, с которой я сталкиваюсь, заключается в том, что мое измерение времени говорит о том, что выполнение занимает 1150 мс, но на самом деле это составляет 3 или 4 секунды.n900 - maemo - timing

Что происходит?

Если я выдаю команду, спать (1), это выглядит очень точно. Однако, когда я измеряю, как долго что-то нужно, оно должно быть совсем немного.

Я использую clock() для измерения выполнения программы. Весь этот материал находится в цикле while.

Walter

ответ

3

Ваша проблема заключается в том, что clock() отчеты вы процессорное время, используемое вашим процессом, и это, как правило, отличается от «реального» времени, затраченного.

Например следующий код:

#include <time.h> 
#include <iostream> 
#include <unistd.h> 

using namespace std; 

int main() 
{ 
     clock_t scl = clock(); 
     sleep(1); 
     cout << "CPU clock time " << clock()-scl << endl; 
} 

дает

time ./a.out 
CPU clock time 0 

real 0m1.005s 
user 0m0.000s 
sys 0m0.004s