C/Visual C - Tiempo por debajo de segundos

 
Vista:

Tiempo por debajo de segundos

Publicado por maritis (2 intervenciones) el 22/03/2006 16:29:01
Hola a tod@s,

Tengo un problema con las funciones "time" de C. Estoy haciendo un benchmark en diferentes lenguajes y no he tenido ningun problema con ninguno, excepto con C. En todos los otros he podido conseguir el tiempo en milisegundos de lo que tarda los programas que he realizado, pero en C, he visto que se puede hacer con la funcion time, clock, gettimeofday y todas estas, pero ninguna me ha funcionado con el compilador Dev-C++. Por ejemplo en Pascal, con la función Gettime, podia conseguir las horas, minutos, segundos y centesimas de segundo y podia hacer multiplicaciones y sumas con estos valores para que me diesen las centesimas exactas que tardaban los programas. ¿No hay ninguna manera de conseguirlo en C, utilizando funciones que pueda usar con el compilador Dev-C++? He visto por otros foros que se tienen que añadir algunas librerías, pero lo he intentando y nada me ha funcionado. ¿Me podríais ayudar, por favor? Os aseguro que he mirado por cualquier foro y ninguna respuesta me ha servido.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tiempo por debajo de segundos

Publicado por fernando.gomez (1603 intervenciones) el 23/03/2006 03:56:19
Hola,

la función time regresa el número de ticks transcurridos desde enero 1 de 1970 (fecha de creación de Unix).

time_t tm1, tm2;

tm1 = tm2 = 0;

time(&tm1);
// hacer algo
time(&tm2);

cout << "Tiempo transcurrido: " << tm2 - tm1 << " ticks" << endl;

El código anterior te debe de funcionar. Y como el resultado es un tick, fácilmente lo puedes convertir a segundos, milisegundos, etc.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempo por debajo de segundos

Publicado por maritis (2 intervenciones) el 23/03/2006 15:22:23
Hola Fernando,

Muchas gracias por contestar pero no me funciona todavía. El problema que veo es que por ejemplo, tengo que hacer la raíz cuadrada de un número y hacerlo en diferentes lenguajes de programacion. Pido al usuario que inserte un número, que tendría que ser más o menos grande, por ejemplo 16 cifras, y no se porqué en C (no C++) me retorna un tiempo demasiado pequeño, y se ve que lo redondea a cero y ese es el problema que tengo, que no puedo medir el tiempo como en otros lenguajes que, aunque ese tiempo sea muy pequeño, por lo menos te pone algun resultado. Este es el trozo de código que tengo que ejecutar 100 veces. Si alguien tiene una solución le agradecería que me ayudara:

time_t inicio, final;
inicio=0;
final=0;

printf("Insertar un numero entero positivo: ");
scanf("%f",&x);
k=0;
while(k<100){
time(&inicio);
z=raiz(x);
time(&final);
printf("Tiempo transcurrido: %f\n", final - inicio);
k++;
getchar();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar