Partilhar via


clock

Calcula a hora do relógio usada pelo processo de chamada.

Sintaxe

clock_t clock( void );

Valor retornado

O tempo decorrido desde a inicialização do CRT no início do processo, medido em CLOCKS_PER_SEC unidades por segundo. Se o tempo decorrido não estiver disponível ou tiver excedido o tempo máximo positivo que pode ser gravado como um tipo clock_t, a função retornará o valor (clock_t)(-1).

Comentários

A função clock informa quantas horas do relógio se passaram desde a inicialização do CRT durante o início do processo. Essa função não está estritamente em conformidade com o ISO C, que especifica o tempo líquido da CPU como o valor retornado. Para obter tempos de CPU, use a função Win32 GetProcessTimes. Para determinar o tempo decorrido em segundos, divida o valor retornado pela função clock pela macro CLOCKS_PER_SEC.

Com tempo suficiente, o valor retornado por clock poderá exceder o valor máximo positivo de clock_t. Quando o processo tiver sido executado por mais tempo, o valor retornado por clock sempre será (clock_t)(-1), conforme especificado pelo padrão ISO C99 (7.23.2.1) e ISO C11 (7.27.2.1). A Microsoft implementa clock_t como uma long, um inteiro assinado de 32 bits e a macro CLOCKS_PER_SEC é definida como 1.000. Essa macro fornece um valor máximo clock de retorno de função de 2147483,647 segundos, ou cerca de 24,8 dias. Não confie no valor retornado por clock em processos que foram executados por mais tempo do que esse período de tempo. Você pode usar a função time de 64 bits ou a função QueryPerformanceCounter do Windows para registrar tempos de processo decorridos de muitos anos.

Requisitos

Rotina Cabeçalho necessário
clock <time.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Gerenciamento de tempo
difftime, _difftime32, _difftime64
time, _time32, _time64