Pregunta
Estoy intentando guardar un archivo cada segundo dentro de + - 100 ms (10% de error). El problema que estoy teniendo es que mi tiempo de medición está diciendo que la ejecución se llevó 1150 ms, pero en realidad parece ser 3 o 4 segundos.
¿Qué está pasando?
Si emite el comando, el sueño (1), que parece ser muy precisa. Sin embargo, cuando mido cómo tuvo mucho tiempo algo, tiene que estar fuera por un largo trecho.
Estoy utilizando el reloj () para medir la ejecución del programa. Todo esto está dentro de un bucle while.
Walter
Solución
Su problema es que clock()
informes que el tiempo de CPU utilizado por su proceso y por lo general es diferente del tiempo "real" que se utiliza.
Por ejemplo siguiente código:
#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;
}
da
time ./a.out
CPU clock time 0
real 0m1.005s
user 0m0.000s
sys 0m0.004s