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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  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,531 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Medir velocidad de ejecución de un programa en lenguaje C.-
« en: 3 Abril 2016, 21:49 pm »

Hola, gente.
Esta vez los molesto por poco, me podrían decir que tengo que agregar a mi código para medir el tiempo que tarda en ejecutarse, busqué en foros y lo que intené no funcionó. -
Es probable que me quieran dar un tirón de orejas por tratar de reinventar la rueda, pero créanme que es tan solo para practicar con punteros y de paso cotejarlo con el método de la burbuja y saber que es más rápido si un doble for o un bucle while. -

Código
  1. #include <stdio.h>
  2.  
  3. void ordenar(size_t *ptrV, size_t elementos);
  4. void mostrar(size_t *ptrV, size_t elementos);
  5.  
  6. int main( void ){
  7. size_t vector[] = {99, 8, 13, 6, 104, 40, 7, 2, 1}, *ptrV = vector;
  8. static size_t elementos = sizeof (vector) / sizeof (size_t);
  9.  
  10. ordenar(ptrV, elementos);
  11. mostrar(ptrV, elementos);
  12.  
  13. return 0;
  14. }
  15.  
  16. void ordenar(size_t *ptrV, size_t elementos){
  17. size_t i, tmp = 0;
  18.  
  19. while(1){
  20. if( *(ptrV+i) >  *(ptrV+(i+1)) ){
  21. tmp = *(ptrV+i);
  22. *(ptrV+i) = *(ptrV+(i+1));
  23. *(ptrV+(i+1)) = tmp;
  24. }
  25. if( i+1 == elementos ){
  26. if( tmp == 0) break;
  27. else{tmp = 0; i = -1;}
  28. }
  29. i++;
  30. }
  31. }
  32.  
  33. void mostrar(size_t *ptrV, size_t elementos){
  34. size_t i;
  35.  
  36. for( i = 0; i < elementos; i++ )
  37. printf( " %u", *(ptrV+i) );
  38. }

Desde ya muchas gracias. -

Saludo.
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.-
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #1 en: 3 Abril 2016, 22:15 pm »

Si usas Unix o derivado usa el comando time. Suponiendo que tu programa se llame 'mi_programa'
escribe en el shell
Código
  1. time ./mi_programa


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


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

Código
  1. #include <time.h>
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.    clock_t cl = clock();
  6.    // Programa
  7.    cl = clock()-cl;
  8.    printf("%i", (cl*1000)/CLOCKS_PER_SEC);
  9. }
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



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

Ivancea96, cuando corro lo que me sugeriste agregar me pasa esto:



compila a la perfección solo que cambie el %i por %li (me daba error).-

Daniel.



MAFUS.
Lo tuyo funciona solo que no se cierra el programa hasta apretar Enter por lo tanto en segundos el tiempo tomado no es tan preciso. -
En cuanto a Windows el que dejo a continuación, funciona (no lo verifique, pero debe ser muy parecido al de ivancea96 ) como lo posteo, pero si lo aplico al programa me hace exactamente lo mismo que al principio. -
desconozco que efecto extraño produce el programa que ordena que si le agrego esas pocas líneas revienta, seguiremos investigando, igual espero que alguien se ilumine y pueda hallar la solución. -

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. for( i=0; i<10000; i++ ){
  11. printf("*");
  12. }
  13.  
  14. printf( "\n Sgundos transcurridos.....: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
  15.  
  16. return 0;
  17. }

Daniel.
« Última modificación: 4 Abril 2016, 17:18 pm por Eternal Idol » 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.-
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #4 en: 4 Abril 2016, 11:50 am »

Me funciona correctamente. ¿Cuál es el código que te falla, y qué código de error lanza?
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



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

Hola.
Citar
¿Cuál es el código que te falla?
Cuando le agrego las líneas que me sugeriste.
Citar
¿qué código de error lanza?
Al compilar ninguno, al ejecutar no muestra nada y aparece el mensaje que postee anteriormente. -
Cuando decís que te funciona correctamente, te referís a que ¿lo estás corriendo dentro del programa mío o con algún código diferente?. -

Saludos.
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.-
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #6 en: 4 Abril 2016, 15:04 pm »

El problema está en la función "ordenar". No has inicializado la variable "i", por lo que al principio del while esta variable tiene un valor basura, que por casualidad, no te da error cuando pones solo tu código pero si que da error cuando fusionamos tu código con el de contar el tiempo. Repito, es casualidad que al principio no diera error
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #7 en: 4 Abril 2016, 17:11 pm »

Hola,  class_OpenGL.
Efectivamente, esa variable era la causante del error, cuando cambie el bucle for por el while no lo tube en cuenta. -
En la función printf efectué 2 cambios y quedo así (de lo contrario me daba errores):

Código
  1. printf("\n\n Milesegundos transcurridos.....:%f", (cl*1000)/(double)CLOCKS_PER_SEC);

%f y (double)

Por último ¿es coherente que me de el resultado con el signo menos?
-98.000000
-95.000000

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


Desconectado Desconectado

Mensajes: 3.412


ASMático


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

No, no lo es. Si vas a trabajar con milisegundos, te recomiendo tratarlo como entero. En Windows, no tendrás microsegundos.

Luego, asegúrate de haber hecho clock()-cl y no al revés.
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Medir velocidad de ejecución de un programa en lenguaje C.-
« Respuesta #9 en: 4 Abril 2016, 20:23 pm »

He probado el programa y me salen 0 milisegundos (recuerda que solo mides milisegundos, y estos se truncan), ninguna cifra negativa.
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
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,684 Último mensaje 29 Octubre 2021, 11:32 am
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines