Autor
|
Tema: Tiempo de ejecución en Milisegundos, Linux (Leído 5,651 veces)
|
Castiblanco
|
Hola... Tengo un par de algoritmos y necesito saber su tiempo de ejecución, pero necesito ese tiempo en milisegundos y no se puede en segundos y dividirlos en 1000 porque se ejecutan rápido y no llegan a 1 segundo así que tienden a cero y no me sirve... Lo pude encontrar para Windows: using namespace std; double performancecounter_diff(LARGE_INTEGER *a, LARGE_INTEGER *b){ LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); return (double)(a->QuadPart - b->QuadPart) / (double)freq.QuadPart; } main(){ LARGE_INTEGER t_inicio, t_final; double sec; int x=0, may=0; cout << "Ingrese X" << endl; cin >>x; int dato[x]; for(int k=0;k<x;k++){ cout << "Ingrese dato "<<k+1<<endl; cin >> dato[k]; } QueryPerformanceCounter(&t_inicio); for(int k=0;k<x;k++){ if (dato[k]>may){ may = dato[k]; } } QueryPerformanceCounter(&t_final); sec = performancecounter_diff(&t_final, &t_inicio); cout << "El mayor es: "<< endl << may << endl; printf("%.16g millisegudos\n", sec * 1000.0); system("pause"); }
Pero no me sirve en Linux que es donde lo necesito ya que utilizo la librería windows.h Alguien le ha funcionado alguno, porque veo varios a través de Google pero no alguno que sirva de verdad. Gracias!
|
|
|
En línea
|
|
|
|
capsulasinformaticas
Desconectado
Mensajes: 15
|
Aun que hasta ahora solo he programado C y practicamente nada en C++ igual me tome el trabajo de limpiar un poco el codigo, espero haberlo hecho bien. Yo te digo que por lo que se, usar sintaxis de C y C++ no es buena practica de programacion, y ademas usas System("PAUSE"); y para linux creo que ni existe ni es bueno usarlo por varias razones. Bueno, lo otro, borre lo que creo era codigo para intentar tomar el tiempo, lo cual me generaba errores en la compilacion, y puse otra forma de tomarlo que por lo menos a mi me funciona en Windows, abajo de dejo el codigo. #include <iostream> #include <ctime> int main() { int i; int x = 0, mayor = 0; clock_t j,t; std::cout << "Ingrese X: "; std::cin >> x; int dato[x]; j = clock(); for(i=0; i<x; i++) { std::cout << "Ingrese dato "<< i + 1 << ": "; std::cin >> dato[i]; } j = clock() - j; t = clock(); for(i=0; i<x; i++) if (dato[i] > mayor) mayor = dato[i]; t = clock() - t; std::cout << "\nEl Mayor es: " << mayor << "\n\n"; std::cout << "Se demoro: " << ((float)j)/CLOCKS_PER_SEC << " Segundos en ingresar los datos...\n"; std::cout << "Algoritmo para encontrar al mayor dato se demoro: " << ((float)t)/CLOCKS_PER_SEC << " Segundos\n\n"; std::cin.get(); }
Cualquier cosa avisas. Saludos.
|
|
« Última modificación: 16 Febrero 2013, 06:01 am por capsulasinformaticas »
|
En línea
|
|
|
|
Castiblanco
|
Gracias por la intención pero esa forma tampoco me funciona :/
Me da que t vale 0, y CLOCKS_PER_SEC algo como 100000 entonces el resultado da 0 también, a mi también me funcionó algo parecido en Windows pero en Linux nada!!!
Saludos capsulasinformaticas.
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
Para recoger la hora actual del sistema en microsegundos en C... double microsegundos() { struct timeval t; if (gettimeofday(&t, NULL) < 0 ) return 0.0; return (t.tv_usec + t.tv_sec * 1000000.0); }
Ya sabrás tú medir los tiempos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
error 458 en tiempo de ejecucion
Programación Visual Basic
|
wACtOr
|
0
|
3,168
|
18 Junio 2007, 16:20 pm
por wACtOr
|
|
|
tiempo de ejecucion
« 1 2 »
Programación C/C++
|
mapers
|
11
|
13,695
|
26 Junio 2010, 15:37 pm
por cbug
|
|
|
tiempo de ejecucion!!!
Programación General
|
mapers
|
3
|
3,713
|
28 Agosto 2010, 09:00 am
por Littlehorse
|
|
|
Como hacer que un bucle se ejecute durante X milisegundos en linux
Programación C/C++
|
Patofet
|
3
|
3,978
|
17 Agosto 2012, 23:05 pm
por Foxy Rider
|
|
|
Milisegundos
.NET (C#, VB.NET, ASP)
|
Brasan789
|
4
|
3,090
|
18 Julio 2014, 15:36 pm
por Brasan789
|
|