Вопрос

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

В чем дело?

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

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

Уолтер

Это было полезно?

Решение

Ваша проблема в том, что 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top