Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Yoel Alejandro en 9 Marzo 2014, 17:34 PM

Título: No funciona timer en Linux
Publicado por: Yoel Alejandro en 9 Marzo 2014, 17:34 PM
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 );

}
Título: Re: No funciona timer en Linux
Publicado por: amchacon en 9 Marzo 2014, 17:36 PM
Lo que mide ahí son los ciclos de reloj, mientras tengas el programa en "pausa" no hay ciclos de reloj.
Título: Re: No funciona timer en Linux
Publicado por: Yoel Alejandro en 9 Marzo 2014, 23:45 PM
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" );
}

Título: Re: No funciona timer en Linux
Publicado por: amchacon en 10 Marzo 2014, 00:01 AM
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.