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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Tiempo de ejecución en Milisegundos, Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tiempo de ejecución en Milisegundos, Linux  (Leído 5,337 veces)
Castiblanco


Desconectado Desconectado

Mensajes: 2.438


Ver Perfil WWW
Tiempo de ejecución en Milisegundos, Linux
« en: 16 Febrero 2013, 03:50 am »

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:

Código
  1. using namespace std;
  2.  
  3. double performancecounter_diff(LARGE_INTEGER *a, LARGE_INTEGER *b){
  4.  LARGE_INTEGER freq;
  5.  QueryPerformanceFrequency(&freq);
  6.  return (double)(a->QuadPart - b->QuadPart) / (double)freq.QuadPart;
  7. }  
  8. main(){
  9.  
  10.  
  11.  LARGE_INTEGER t_inicio, t_final;
  12.  double sec;
  13.  
  14. int x=0, may=0;
  15.  
  16.    cout << "Ingrese X" << endl;
  17.    cin >>x;
  18.  
  19.    int dato[x];
  20.  
  21.    for(int k=0;k<x;k++){
  22. cout << "Ingrese dato "<<k+1<<endl;
  23.        cin >> dato[k];
  24.    }    
  25.  
  26.  QueryPerformanceCounter(&t_inicio);
  27.  
  28.    for(int k=0;k<x;k++){
  29.        if (dato[k]>may){
  30.            may = dato[k];
  31.        }
  32.    }
  33.  
  34.  QueryPerformanceCounter(&t_final);
  35.  
  36.  sec = performancecounter_diff(&t_final, &t_inicio);
  37.  
  38.  cout << "El mayor es: "<< endl << may << endl;
  39.  
  40.  printf("%.16g millisegudos\n", sec * 1000.0);
  41.  
  42.   system("pause");
  43.  
  44. }

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 Desconectado

Mensajes: 15



Ver Perfil
Re: Tiempo de ejecución en Milisegundos, Linux
« Respuesta #1 en: 16 Febrero 2013, 05:38 am »

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.

Código
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. int main() {
  5.    int i;
  6.    int x = 0, mayor = 0;
  7.    clock_t j,t;
  8.  
  9.    std::cout << "Ingrese X: ";
  10.    std::cin >> x;
  11.  
  12.    int dato[x];
  13.  
  14.    j = clock();
  15.  
  16.    for(i=0; i<x; i++) {
  17. std::cout << "Ingrese dato "<< i + 1 << ": ";
  18. std::cin >> dato[i];
  19. }
  20.  
  21. j = clock() - j;
  22. t = clock();
  23.  
  24. for(i=0; i<x; i++)
  25. if (dato[i] > mayor)
  26. mayor = dato[i];
  27.  
  28. t = clock() - t;
  29.  
  30. std::cout << "\nEl Mayor es: " << mayor << "\n\n";
  31. std::cout << "Se demoro: " << ((float)j)/CLOCKS_PER_SEC << " Segundos en ingresar los datos...\n";
  32. std::cout << "Algoritmo para encontrar al mayor dato se demoro: " << ((float)t)/CLOCKS_PER_SEC << " Segundos\n\n";
  33.  
  34. std::cin.get();
  35. }

Cualquier cosa avisas.

Saludos.


« Última modificación: 16 Febrero 2013, 06:01 am por capsulasinformaticas » En línea

Castiblanco


Desconectado Desconectado

Mensajes: 2.438


Ver Perfil WWW
Re: Tiempo de ejecución en Milisegundos, Linux
« Respuesta #2 en: 16 Febrero 2013, 13:44 pm »

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 Desconectado

Mensajes: 1.077



Ver Perfil
Re: Tiempo de ejecución en Milisegundos, Linux
« Respuesta #3 en: 16 Febrero 2013, 14:34 pm »

http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html
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 Desconectado

Mensajes: 166


Ver Perfil
Re: Tiempo de ejecución en Milisegundos, Linux
« Respuesta #4 en: 16 Febrero 2013, 15:06 pm »

Para recoger la hora actual del sistema en microsegundos en C...

Código
  1. double microsegundos() {
  2. struct timeval t;
  3. if (gettimeofday(&t, NULL) < 0 )
  4. return 0.0;
  5. return (t.tv_usec + t.tv_sec * 1000000.0);
  6. }

Ya sabrás tú medir los tiempos :P
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error 458 en tiempo de ejecucion
Programación Visual Basic
wACtOr 0 3,055 Último mensaje 18 Junio 2007, 16:20 pm
por wACtOr
tiempo de ejecucion « 1 2 »
Programación C/C++
mapers 11 12,999 Último mensaje 26 Junio 2010, 15:37 pm
por cbug
tiempo de ejecucion!!!
Programación General
mapers 3 3,422 Último mensaje 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,646 Último mensaje 17 Agosto 2012, 23:05 pm
por Foxy Rider
Milisegundos
.NET (C#, VB.NET, ASP)
Brasan789 4 2,866 Último mensaje 18 Julio 2014, 15:36 pm
por Brasan789
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines