Medir el tiempo de una rutina en lenguaje C.

Iniciado por NOB2014, 3 Septiembre 2014, 16:17 PM

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

NOB2014

Hola Amigos.
El enunciado del manual es el siguiente.-



//http://dacap.com.ar/blog/cpp/medir-el-tiempo-de-una-rutina/
#include <stdio.h>
#include <windows.h>

/* retorna "a - b" en segundos */
double performancecounter_diff(LARGE_INTEGER *a, LARGE_INTEGER *b){
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
return (double)(a->QuadPart - b->QuadPart) / (double)freq.QuadPart;
}

int main(int argc, char *argv[]){
int contador=0;
LARGE_INTEGER t_ini, t_fin;
double secs;

QueryPerformanceCounter(&t_ini);
while(contador <= 300000000){
contador++;
if(contador % 100000000 == 0){
QueryPerformanceCounter(&t_fin);
secs = performancecounter_diff(&t_fin, &t_ini);
printf("%.16g milliseconds\n", secs * 1000.0);
QueryPerformanceCounter(&t_ini);
}
}
 
getchar();
return 0;
}



El programa que logré a partir de los ejemplos de la página me funciona correctamente (por lo menos es lo que a mí me parece) lo que pasa es que no entiendo casi ninguna línea (creo que tiene que ver con las API's de windows), la pregunta es ¿alguien me puede decir si se puede lograr lo mismo con con un programa en C puro?, de ser así ¿podrian poner algún ejemplo?.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

rir3760

Cita de: NOB2014 en  3 Septiembre 2014, 16:17 PM¿alguien me puede decir si se puede lograr lo mismo con con un programa en C puro?
No ya que al utilizar solo las facilidades de la biblioteca estándar de C (difftime, struct tm, clock) se garantiza una resolución en segundos, nada mas.

Para el calculo exacto lo mejor es utilizar extensiones (como es el caso con tu ejemplo usando la Win32 API).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

NOB2014

Hola rir.
Bueno parece que el tema no da para más, cuando aprenda a construir librerías haré una para esto y me quedará como una instrucción mas.-   

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-