N900 - Maemo - время - PullRequest
       8

N900 - Maemo - время

2 голосов
/ 20 января 2011

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

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

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

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

Walter

1 Ответ

3 голосов
/ 20 января 2011

Ваша проблема в том, что 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
...