clock
Vypočítá hodinový čas používaný volajícím procesem.
Syntaxe
clock_t clock( void );
Vrácená hodnota
Uplynulý čas od inicializace CRT na začátku procesu měřený v CLOCKS_PER_SEC
jednotkách za sekundu. Pokud uplynulá doba není k dispozici nebo překročila maximální kladnou dobu, kterou lze zaznamenat jako clock_t
typ, vrátí funkce hodnotu (clock_t)(-1)
.
Poznámky
Funkce clock
udává, kolik času uplynulo od inicializace CRT během spuštění procesu. Tato funkce není striktně v souladu se standardem ISO C, který jako návratová hodnota určuje čistý čas procesoru. Pokud chcete získat časy procesoru, použijte funkci Win32 GetProcessTimes
. Pokud chcete zjistit uplynulý čas v sekundách, vydělte hodnotu vrácenou clock
funkcí makrem CLOCKS_PER_SEC
.
Vzhledem k dostatečnému času může hodnota vrácená clock
hodnotou překročit maximální kladnou clock_t
hodnotu . Pokud proces běží déle, je hodnota vrácená vždy (clock_t)(-1)
, jak je určeno standardem clock
ISO C99 (7.23.2.1) a standardem ISO C11 (7.27.2.1). Microsoft implementuje clock_t
jako long
32bitové celé číslo se znaménkem a CLOCKS_PER_SEC
makro je definováno jako 1000. Toto makro poskytuje maximální clock
návratovou hodnotu funkce 2147483,647 sekund nebo přibližně 24,8 dní. Nespoléhejte na hodnotu vrácenou clock
v procesech, které běží déle, než je tato doba. 64bitovou time
funkci nebo funkci Windows QueryPerformanceCounter
můžete použít k zaznamenávání uplynulých procesů v mnoha letech.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
clock |
<time.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Správa času
difftime
, , _difftime32
_difftime64
time
, , _time32
_time64