Вопрос
Я пытаюсь сохранить файл каждую секунду в течение +- 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
Не связан с StackOverflow