No funciona timer en Linux

Iniciado por Yoel Alejandro, 9 Marzo 2014, 17:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Yoel Alejandro

Hola, preciso ayuda de los Linuxeros. Este sencillo código (que mide el tiempo transcurrido entre el inicio del programa y la pulsación de ENTER) no funciona como debe en Linux. En Windows lo probé y está Ok.

El problema es que clock() devuelve siempre cero (0), tanto para t1 como para t2, y por eso no mide el tiempo. ¿Qué es lo que le falta "ajustar" para que funcione en plataformas Linux y/ similares?

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <time.h>

int main( ) {

clock_t t1, t2;

t1 = clock();
getchar();
t2 = clock();
printf("Han transcurrido %.2lf s\n", (double)(t2 - t1)/CLOCKS_PER_SEC );

}
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

amchacon

Lo que mide ahí son los ciclos de reloj, mientras tengas el programa en "pausa" no hay ciclos de reloj.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

Yoel Alejandro

Mmmm, entonces la implementación es diferente que en Windows. En Windows el tiempo sí transcurre a pesar de getchar(). Curioso (?!)

Probé este otro, que imprime "1 ... " y espera 3 segundos antes de imprimir "2". Éste sí funciona en Linux de la manera esperada:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <time.h>

int main( ) {

clock_t t1, t2;
int i, j, k;

t1 = clock();
printf( "1 ... " );
        fflush( stdout );
do {
t2 = clock();
} while ( (double)(t2 - t1)/CLOCKS_PER_SEC < 3 );
printf( "2" );
}

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

amchacon

Claro, porque ahí si hace ciclos de reloj. El programa está todo el rato comprobando y actualizando.

Lo de windows debe ser algún efecto lateral de su implementación, pero lo de linux es eso.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar