clock
Berechnet die durch den aufrufenden Prozess verwendete Wanduhrzeit.
Syntax
clock_t clock( void );
Rückgabewert
Die verstrichene Zeit seit der CRT-Initialisierung beim Start des Prozesses, gemessen in CLOCKS_PER_SEC
-Einheiten pro Sekunde. Wenn die verstrichene Zeit nicht verfügbar ist oder die maximale positive Zeit übersteigt, die als clock_t
-Typ aufgezeichnet werden kann, gibt die Funktion den Wert (clock_t)(-1)
zurück.
Hinweise
Die clock
-Funktion gibt an, welche Gesamtbetrachtungszeit seit der CRT-Initialisierung beim Start des Prozesses vergangen ist. Diese Funktion entspricht nicht streng iso C, was die Netto-CPU-Zeit als Rückgabewert angibt. Um CPU-Zeiten zu erhalten, verwenden Sie die Win32-Funktion GetProcessTimes
. Um die verstrichene Zeit in Sekunden zu ermitteln, teilen Sie den Rückgabewert der clock
-Funktion durch das Makro CLOCKS_PER_SEC
.
Bei ausreichend Zeit kann der von clock
zurückgegebene Wert den maximalen positiven Wert von clock_t
übersteigen. Wenn die Prozessausführung länger gedauert hat, ist der von clock
zurückgegebene Wert – wie im ISO C99-Standard (7.23.2.1) und im ISO C11-Standard (7.27.2.1) angegeben – stets (clock_t)(-1)
. Microsoft implementiert clock_t
als long
, einen 32-Bit-Integer mit Vorzeichen, und das CLOCKS_PER_SEC
-Makro ist definiert als 1000. Dieses Makro gibt einen maximalen clock
Funktionsrücklaufwert von 2147483,647 Sekunden oder etwa 24,8 Tage an. Verlassen Sie sich nicht auf den Wert, der von clock
Prozessen zurückgegeben wird, die länger als diese Zeitspanne ausgeführt wurden. Sie können die 64-Bit-Funktion time
oder die Windows-Funktion QueryPerformanceCounter
verwenden, um verstrichene Zeiten von vielen Jahren aufzuzeichnen.
Anforderungen
Routine | Erforderlicher Header |
---|---|
clock |
<time.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Zeitverwaltung
difftime
, _difftime32
_difftime64
time
, _time32
_time64