clock
Calcola il tempo usato dal processo chiamante.
Sintassi
clock_t clock( void );
Valore restituito
Il tempo trascorso dopo l'inizializzazione di CRT all'avvio del processo, misurato in CLOCKS_PER_SEC
unità al secondo. Se il tempo trascorso non è disponibile o ha superato il tempo positivo massimo che può essere registrato come tipo clock_t
, la funzione restituisce il valore (clock_t)(-1)
.
Osservazioni:
La funzione clock
indica quanto tempo è trascorso dall'inizializzazione di CRT durante l'avvio del processo. Questa funzione non è strettamente conforme a ISO C, che specifica il tempo di CPU netto come valore restituito. Per ottenere i tempi di CPU, usare la funzione Win32 GetProcessTimes
. Per determinare il tempo trascorso in secondi, dividere il valore restituito dalla funzione clock
per la macro CLOCKS_PER_SEC
.
Dopo un tempo sufficiente, il valore restituito da clock
può superare il valore positivo massimo di clock_t
. Quando il processo viene eseguito per più tempo, il valore restituito da clock
è sempre (clock_t)(-1)
, come specificato dallo standard ISO C99 (7.23.2.1) e dallo standard ISO C11 (7.27.2.1). Microsoft implementa clock_t
come long
, un valore intero a 32 bit con segno e la CLOCKS_PER_SEC
macro viene definita come 1000. Questa macro restituisce un valore massimo clock
di 2147483,647 secondi o circa 24,8 giorni. Non basarsi sul valore restituito da clock
nei processi che sono stati eseguiti per più tempo rispetto a questo periodo di tempo. È possibile usare la funzione a 64 bit time
o la funzione Windows QueryPerformanceCounter
per registrare i tempi trascorsi del processo di molti anni.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
clock |
<time.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Gestione orari
difftime
, _difftime32
, _difftime64
time
, _time32
, _time64