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