Autor
|
Tema: Medir velocidad de ejecución de un programa en lenguaje C.- (Leído 14,531 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
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. - #include <stdio.h> void ordenar(size_t *ptrV, size_t elementos); void mostrar(size_t *ptrV, size_t elementos); int main( void ){ size_t vector[] = {99, 8, 13, 6, 104, 40, 7, 2, 1}, *ptrV = vector; static size_t elementos = sizeof (vector) / sizeof (size_t); ordenar(ptrV, elementos); mostrar(ptrV, elementos); return 0; } void ordenar(size_t *ptrV, size_t elementos){ size_t i, tmp = 0; while(1){ if( *(ptrV+i) > *(ptrV+(i+1)) ){ tmp = *(ptrV+i); *(ptrV+i) = *(ptrV+(i+1)); *(ptrV+(i+1)) = tmp; } if( i+1 == elementos ){ if( tmp == 0) break; else{tmp = 0; i = -1;} } i++; } } void mostrar(size_t *ptrV, size_t elementos){ size_t i; for( i = 0; i < elementos; i++ ) }
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
Mensajes: 1.603
|
Si usas Unix o derivado usa el comando time. Suponiendo que tu programa se llame 'mi_programa' escribe en el shell time ./mi_programa
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
#include <time.h> #include <stdio.h> int main(){ clock_t cl = clock(); // Programa cl = clock()-cl; printf("%i", (cl*1000)/CLOCKS_PER_SEC); }
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
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. - #include <stdio.h> #include <time.h> int main( void ) { long int i=0; clock_t comienzo; for( i=0; i<10000; i++ ){ } printf( "\n Sgundos transcurridos.....: %f s\n", (clock()-comienzo )/(double)CLOCKS_PER_SEC ); return 0; }
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
Mensajes: 3.412
ASMático
|
Me funciona correctamente. ¿Cuál es el código que te falla, y qué código de error lanza?
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola. ¿Cuál es el código que te falla? Cuando le agrego las líneas que me sugeriste. ¿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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 366
|
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): 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
Mensajes: 3.412
ASMático
|
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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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 |
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Medir la velocidad de descarga del winsock
Programación Visual Basic
|
Jeronimo17
|
6
|
2,169
|
20 Diciembre 2006, 02:07 am
por Jeronimo17
|
|
|
Aplicacion Medir Velocidad
Programación Visual Basic
|
Zorrohack
|
2
|
1,770
|
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
|
3 Septiembre 2014, 19:35 pm
por NOB2014
|
|
|
medir el tiempo de ejecución en C
Programación C/C++
|
fafafa01
|
2
|
29,722
|
14 Diciembre 2016, 02:44 am
por kraiked
|
|
|
Windows reduce velocidad de ejecucion.
« 1 2 3 »
Programación General
|
Usuario887
|
25
|
14,684
|
29 Octubre 2021, 11:32 am
por Usuario887
|
|