Función de reloj en lenguaje C

Función de reloj en lenguaje C

En esto Pista de Linux Artículo, le mostraremos cómo usar el reloj() La función, uno de los recursos disponibles en el lenguaje C, para medir los tiempos de ejecución de un proceso o hilo en particular.

Aunque estas fracciones del tiempo parecen insignificantes, existen casos críticos en los que la capacidad de medir y calcular estas pequeñas fracciones de tiempo son factores críticos en la precisión del sistema o proceso en sí mismo. Daremos una descripción teórica de cómo reloj() funciona, explique su operación y las unidades de medición que utiliza para este propósito.

Luego, utilizando ejemplos prácticos que incluyen fragmentos e imágenes de código, veremos cómo puede implementar esta función de una manera clara y detallada de medir los tiempos críticos en los procesos en tiempo real en diferentes sistemas.

Sintaxis de la función clock ():

Clock_t Clock (nulo)

Clock () Descripción de la función en el idioma C

La función Clock () está vacía cuando se llama. No contiene argumentos de entrada y devuelve el número de garrapatas del reloj en "Clock_T" en el momento de la llamada.

El recuento de pulsos comienza en cero cuando se inicia la aplicación y continúa hasta que el usuario o el sistema lo salgan, restableciendo el cero por desbordamiento en aproximadamente cada 72 minutos. La función Clock () no modifica ni tiene control sobre este contador; Solo obtiene su valor cuando se llama.

Para medir el tiempo de ejecución total del programa, necesitamos llamar al reloj () solo una vez al final del programa. Para medir el tiempo transcurrido de un punto del programa a otro, necesitamos llamar a la función Clock () y calcular los dos datos obtenidos.

El cálculo para determinar las garrapatas transcurridas entre dos llamadas de la reloj() la función se realiza restando el resultado de la primera llamada del resultado de la segunda llamada. Veamos un ejemplo para determinar la cantidad del tiempo transcurrido desde un punto del programa a otro.

El reloj() la función se define en "Tiempo.H ”Funciones de encabezado. Debemos incluirlo en nuestro ".C "o".archivo de código H ”, como se muestra en la siguiente imagen, para usarlo.

#incluir

Cómo obtener las marcas de reloj transcurridas de un punto en el programa a otro con la función Clock ()

En este ejemplo, veremos cómo obtener el número de garrapatas transcurridas de un punto en el programa a otro. Estos dos puntos corresponden a una de las dos llamadas al reloj() función, respectivamente. Para comprender esto, veamos el siguiente código:


#incluir
#incluir
vacío principal ()

clock_t ticks_ini, ticks_end;
Doble garrapatas;
ticks_ini = clock (); // medir el inicio
printf ("Medida de inicio de ticks %ld \ n", ticks_ini);
para (int a = 0; a<=456450; a++);
ticks_end = clock (); // Medir parada
ticks = ticks_end - ticks_ini;
printf ("Medida final de Ticks %ld \ n", ticks_end);
printf ("Las garrapatas transcurridas entre la medida %f \ n", garrapatas);
devolver;

Primero, creamos las dos variables, Ticks_ini y Ticks_end, en el que almacenamos el resultado de Clock () en sus dos llamadas. Lo calculamos para obtener el número de garrapatas transcurridas y el entero ticas, en el que almacenamos el resultado final del total de garrapatas transcurridas.

Entonces, llamamos al reloj() función en nuestro "principal" y recupere las garrapatas del reloj anteriormente definidas en el Ticks_ini variable que transcurrió desde el inicio del programa hasta la primera llamada a esta función. Usamos la función printf () para mostrar este valor.

Después de este retraso, que creamos con para, Llamamos al reloj() función por segunda vez para obtener el número de garrapatas hasta este punto. Emitimos el resultado a la pantalla con la función printf (). Luego obtenemos el resultado del número exacto de tics que transcurrieron entre la primera y la segunda llamada a reloj() restando Ticks_ini de Ticks_end y almacenar el resultado en las garrapatas variables, que llevamos a la consola con printf ().

De esta manera, obtenemos las garrapatas que transcurrieron de un punto a otro en el código.

Cómo convertir el número de garrapatas obtenidas en segundos con la función Clock ()

Una vez que tenemos el número de garrapatas que transcurrieron desde que comenzó el programa o de un punto a otro, podemos convertir este tiempo expresado en tics a segundos dividiendo el resultado del ejemplo anterior por la constante predefinida en el tiempo.H Relojes _per_ sec, Como se muestra en el siguiente fragmento:

ticks = (ticks_end - ticks_ini)/(double) relojs_per_sec;
printf ("Las garrapatas transcurridas en segundos entre la medida %f \ n", garrapatas);

Conclusión

En esto Pista de Linux Artículo, le mostramos cómo implementar el reloj() función para realizar las mediciones de tiempo en las garrapatas del reloj del sistema. También explicamos cómo puede medir todo o parte de estos tiempos dentro de la aplicación en ejecución. Le mostramos cómo convertir los resultados en segundos. Esperamos que hayas encontrado este artículo útil. Puede encontrar más consejos sobre el lenguaje C en nuestros artículos que puede encontrar utilizando el motor de búsqueda del sitio web.