Compartir por


clock

Calcula el tiempo de reloj usado por el proceso de llamada.

Sintaxis

clock_t clock( void );

Valor devuelto

El tiempo transcurrido desde la inicialización de CRT al principio del proceso, medido en unidades por segundo CLOCKS_PER_SEC. Si el tiempo transcurrido no está disponible o ha superado el tiempo máximo positivo que puede registrarse como un tipo clock_t, la función devuelve el valor (clock_t)(-1).

Comentarios

La función clock indica el tiempo de reloj que ha transcurrido desde la inicialización de CRT durante el inicio del proceso. Esta función no se ajusta estrictamente a ISO C, que especifica el tiempo de CPU neto como valor devuelto. Para obtener tiempos de CPU, use la función GetProcessTimes de Win32. Para determinar el tiempo transcurrido en segundos, divida el valor devuelto por la función clock mediante la macro CLOCKS_PER_SEC.

Con el tiempo suficiente, el valor devuelto por clock puede superar el valor positivo máximo de clock_t. Cuando el proceso se ha ejecutado durante más tiempo, el valor devuelto por clock siempre es (clock_t)(-1), tal y como especifica el estándar ISO C99 (7.23.2.1) y el estándar ISO C11 (7.27.2.1). Microsoft implementa clock_t como long, un entero de 32 bits con signo, y la macro CLOCKS_PER_SEC se define como 1000. Esta macro proporciona un valor devuelto de función máximo clock de 2147483,647 segundos o aproximadamente 24,8 días. No confíe en el valor devuelto por clock en los procesos que se han ejecutado durante más tiempo que esta cantidad de tiempo. Puede usar la función time de 64 bits o la función QueryPerformanceCounter de Windows para registrar los tiempos transcurridos de proceso de muchos años.

Requisitos

Routine Encabezado necesario
clock <time.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_clock.c
// This sample uses clock() to 'sleep' for three
// seconds, then determines how long it takes
// to execute an empty loop 600000000 times.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// Pauses for a specified number of clock cycles.
void do_sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}

const long num_loops = 600000000L;

int main( void )
{
   long    i = num_loops;
   clock_t start, finish;
   double  duration;

   // Delay for a specified time.
   printf( "Delay for three seconds\n" );
   do_sleep( (clock_t)3 * CLOCKS_PER_SEC );
   printf( "Done!\n" );

   // Measure the duration of an event.
   start = clock();
   while( i-- )
      ;
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "Time to do %ld empty loops is ", num_loops );
   printf( "%2.3f seconds\n", duration );
}
Delay for three seconds
Done!
Time to do 600000000 empty loops is 1.354 seconds

Consulte también

Administración de tiempo
difftime, , _difftime32, _difftime64
time, , _time32, _time64