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

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top