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