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