elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Medir velocidad de ejecución de un programa en lenguaje C.-
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 Ir Abajo Respuesta Imprimir
Autor Tema: Medir velocidad de ejecución de un programa en lenguaje C.-  (Leído 14,528 veces)
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #20 en: 16 Abril 2016, 14:26 pm »

No puedo decir que este "bien" ahora pero parece ser que al menos por un factor de 100 estaba errado antes.

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main( void )
  5. {
  6. long int i=0;
  7. clock_t comienzo;
  8.  
  9. comienzo=clock();
  10.  
  11. // programa
  12. for( i=0; i<5000000; i++ ){
  13. printf("*");
  14. }
  15.  
  16. printf( "\n Segundos transcurridos.....: %f s\n", 100*(clock()-comienzo)/(double)CLOCKS_PER_SEC );
  17.  
  18. return 0;
  19. }
  20.  


Segun leo en StackOverflow: "CLOCKS_PER_SEC might be defined as 1000000, depending on what options you use to compile, and thus it does not seem like a good solution."

http://stackoverflow.com/questions/5248915/execution-time-of-c-program

---
PD: realmente veo que ni siquiera es un factor multiplo de 10


« Última modificación: 16 Abril 2016, 14:32 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #21 en: 16 Abril 2016, 14:31 pm »

Eso son centisegundos, no segundos.


En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #22 en: 16 Abril 2016, 14:34 pm »

Me tomé el trabajo de medir el tiempo de ejecucion del programa que posteé (o sea le subi el tiempo hasta que sea posible medirlo facilmente) y como digo...... el valor esta "en el orden" de los SEGUNDOS (correcto ahora para mi SO) pero tampoco es creo exacto (me difiere en algunos segundos)

Veo el problema como algo "grave" ya que nadie parece tener la seguridad de como es y menos cross-plataform o cross-compiler
« Última modificación: 16 Abril 2016, 15:27 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #23 en: 16 Abril 2016, 14:54 pm »

En Windows, suele ser CLOCKS_PER_SEC = 1000, y en Unix = 1000000. clock también retorna un valor acorde a estas cantidades y correcto.

1. ¿Qué valor tiene CLOCKS_PER_SEC en tu SO?
2. ¿Qué SO es?
3. ¿El valor retornado por tu clock() va en el rango de los milisegundos o de los microsegundos? ¿Otro quizás?
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #24 en: 16 Abril 2016, 15:31 pm »

Uso Windows 6.3 y si vale 1000 como dices

En fin.... me toco multiplicar por 100 como decia respecto del programa aportado aqui para que tenga algun sentido....
En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #25 en: 16 Abril 2016, 15:45 pm »

¿Qué valor da clock()-comienzo en una diferencia aproximada de 1 segundo? En entero, sin coma flotante.
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #26 en: 16 Abril 2016, 16:02 pm »

Hola.
Perdón por interponerme pero el código de boctulus me da resultados correctisimos, medido con un reloj de una página de internet, correctisimos. -

Solo que lo hago como dijo MAFUS, en segundos. -

Código
  1. printf( "\n Segundos transcurridos.....: %f s\n", 1.0*(clock()-  comienzo)/(double)CLOCKS_PER_SEC );

Saludos.
Daniel
En línea

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.-
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #27 en: 16 Abril 2016, 16:12 pm »

El codigo no es mio, es la forma estandar de usar la libreria

Pero como digo en Windows el factor es de 100 (aprox) asi que creo este tipo de calculos deberian hacerse con ayuda del precompilador (#ifndef _Windows ...) al menos que se quiera solo valores relativos (mismo computador, mismo SO)

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. #ifdef __linux__
  5.    #define TIMEFACTOR   1
  6. #elif _WIN32
  7.    #define TIMEFACTOR   100
  8. #else
  9. // definir
  10. #endif
  11.  
  12. int main( void )
  13. {
  14. long int i=0;
  15. clock_t comienzo;
  16.  
  17. comienzo=clock();
  18.  
  19. // programa
  20. for( i=0; i<1000000; i++ ){
  21. printf("*");
  22. }
  23.  
  24. printf( "\n Segundos transcurridos.....: %f s\n", TIMEFACTOR*(clock()-comienzo)/(double)CLOCKS_PER_SEC );
  25.  
  26. return 0;
  27. }
  28.  
« Última modificación: 16 Abril 2016, 16:34 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #28 en: 16 Abril 2016, 16:39 pm »

Insisto, el único "factor" es CLOCKS_PER_SEC, que para eso existe.
Multiplicar por 1000, da milisegundos. multiplicar por 100, centisegundos.

Si en tu compilador o sistema no funciona así, habrá que analizar por qué. Poner un coeficientes que cuadre no es una opción lógica.

Prueba si quieres en otro PC, en otro SO o en una máquina virtual para ver el resultado que debiera dar.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #29 en: 16 Abril 2016, 16:56 pm »

Ivan: me parece perfecto que insistas, estoy tratando de ver porque no me concuerdan los resultados.

Siguiendo con la liberia time.h, te pido mires este codigo....... no le encuentro el fallo:

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main( void )
  5. {
  6.  
  7. // solo como control adicional
  8.  time_t tiempo1 = time(0);
  9.  time_t tiempo2 = time(0);
  10.  struct tm *tini = localtime(&tiempo1);
  11.  struct tm *tfin = localtime(&tiempo2);
  12.  char output[128];
  13.  
  14.  
  15.  strftime(output,128,"%d/%m/%y %H:%M:%S",tini);
  16.  printf("%s\n",output);
  17.  
  18. // programa
  19. for(int i=0; i<40000000; i++ ){
  20. }
  21.  
  22.  strftime(output,128,"%d/%m/%y %H:%M:%S",tfin);
  23.  printf("%s\n",output);
  24.  
  25. return 0;
  26. }
  27.  

No logro muestre dos fechas-horas distintas! 

PD: quiero utilizar esto para rematar con el tema..... probando si es necesario o no un TIMEFACTOR adicional (pues en realidad quiero estar de acuerdo contigo)
En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: 1 2 [3] 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Medir la velocidad de descarga del winsock
Programación Visual Basic
Jeronimo17 6 2,169 Último mensaje 20 Diciembre 2006, 02:07 am
por Jeronimo17
Aplicacion Medir Velocidad
Programación Visual Basic
Zorrohack 2 1,770 Último mensaje 21 Enero 2008, 01:51 am
por Syddhartha
Medir el tiempo de una rutina en lenguaje C.
Programación C/C++
NOB2014 2 3,503 Último mensaje 3 Septiembre 2014, 19:35 pm
por NOB2014
medir el tiempo de ejecución en C
Programación C/C++
fafafa01 2 29,722 Último mensaje 14 Diciembre 2016, 02:44 am
por kraiked
Windows reduce velocidad de ejecucion. « 1 2 3 »
Programación General
Usuario887 25 14,683 Último mensaje 29 Octubre 2021, 11:32 am
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines