¿Cómo medir el tiempo que tarda una función en C?

Para calcular el tiempo que tarda un proceso, podemos usar la función clock() que está disponible time.h . Podemos llamar a la función de reloj al principio y al final del código para el que medimos el tiempo, restar los valores y luego dividir por CLOCKS_PER_SEC (la cantidad de tics de reloj por segundo) para obtener el tiempo del procesador, como sigue.

     #include <time.h>
     
     clock_t start, end;
     double cpu_time_used;
     
     start = clock();
     ... /* Do the work. */
     end = clock();
     cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

A continuación se muestra un programa C de muestra en el que medimos el tiempo que toma fun(). La función fun() espera que se presione la tecla enter para finalizar. 

C

/* Program to demonstrate time taken by function fun() */
#include <stdio.h>
#include <time.h>
 
// A function that terminates when enter key is pressed
void fun()
{
    printf("fun() starts \n");
    printf("Press enter to stop fun \n");
    while(1)
    {
        if (getchar())
            break;
    }
    printf("fun() ends \n");
}
 
// The main program calls fun() and measures time taken by fun()
int main()
{
    // Calculate the time taken by fun()
    clock_t t;
    t = clock();
    fun();
    t = clock() - t;
    double time_taken = ((double)t)/CLOCKS_PER_SEC; // in seconds
 
    printf("fun() took %f seconds to execute \n", time_taken);
    return 0;
}

Salida: La siguiente salida se obtiene después de esperar alrededor de 4 segundos y luego presionar la tecla enter.

fun() starts
Press enter to stop fun

fun() ends
fun() took 4.017000 seconds to execute

Complejidad de tiempo: O(1)

Espacio Auxiliar : O(1)

¿Cómo encontrar el tiempo que toma un comando/programa en Linux Shell? Referencias: http://www.gnu.org/software/libc/manual/html_node/CPU-Time.html http://www.cplusplus.com/reference/ctime/clock/?kw=clock Escriba comentarios si encuentra algo incorrecto, o desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *