Consulta sobre eficiencia de los algoritmos

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

Consulta sobre eficiencia de los algoritmos

#1 Mensaje por Masakre » 07/06/2014 9:04 pm

Si resuelvo 1 enunciado de 2 formas distintas y quiero saber cuál de los algoritmos es el más eficiente, ¿cómo podría saberlo?

Si comparo el tiempo de ejecución de ambos en un mismo ordenador podría determinarlo, ¿verdad?

En Code::Blocks aparece el tiempo de ejecución por defecto, pero incluye el tiempo en que tardo en ingresar los datos, y no quiero modificar los datos desde el código fuente.

En todo caso tendría que medir de alguna forma el tiempo, luego de que se ingresaron los datos y luego que se encontró la respuesta.

¿Estaría bien usar lo siguiente? Tal vez exista alguna herramienta para determinar ello.

Código: Seleccionar todo

clock_t t; // Antes de los siguientes.
t = clock(); // Luego del ingreso de datos.
t = clock() - t; // Luego de encontrar la respuesta.

Avatar de Usuario
_Leo_
Mensajes: 399
Registrado: 20/10/2005 11:00 pm
Ubicación: Buenos Aires, Argentina
Contactar:

#2 Mensaje por _Leo_ » 08/06/2014 7:19 am

La idea está bien, pero la función clock() no es la adecuada para lo que estás haciendo. En el manual de clock() dice que la función devuelve el tiempo de procesador usado por el programa. Ese no es el tiempo real transcurrido ya que el procesador es compartido con otros procesos, y ese tiempo no estaría contabilizado ahí.

Te recomiendo que uses clock_gettime() que retorna el tiempo real con precisión de nanosegundos. En este código para contar caracteres en UTF-8 usé esa función para medir el tiempo de ejecución de una porción del programa. Fijate de la línea 24 a 28 y en la 52.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados