clock
Çağırma işlemi tarafından kullanılan duvar saati saatini hesaplar.
Sözdizimi
clock_t clock( void );
Dönüş değeri
İşlemin başlangıcındaki CRT başlatma işleminden bu yana geçen süre, saniye başına birim cinsinden CLOCKS_PER_SEC
ölçülür. Geçen süre kullanılamıyorsa veya tür olarak clock_t
kaydedilebilecek maksimum pozitif süreyi aştıysa, işlevi değerini (clock_t)(-1)
döndürür.
Açıklamalar
işlevi, clock
işlem başlatma sırasında CRT başlatma işleminden bu yana duvar saati süresinin ne kadar geçtiğini bildirir. Bu işlev, net CPU süresini dönüş değeri olarak belirten ISO C'ye tam olarak uymaz. CPU sürelerini almak için Win32 GetProcessTimes
işlevini kullanın. Geçen süreyi saniye cinsinden belirlemek için, işlevi tarafından clock
döndürülen değeri makroya CLOCKS_PER_SEC
bölün.
Yeterli süre verildiyse, tarafından clock
döndürülen değer değerinin maksimum pozitif değerini clock_t
aşabilir. İşlem daha uzun çalıştığında, tarafından clock
döndürülen değer her zaman (clock_t)(-1)
ISO C99 standardı (7.23.2.1) ve ISO C11 standardı (7.27.2.1) tarafından belirtildiği şekilde olur. Microsoft, imzalı bir long
32 bit tamsayı olarak uygular clock_t
ve CLOCKS_PER_SEC
makro 1000 olarak tanımlanır. Bu makro en fazla clock
2147483,647 saniye veya yaklaşık 24,8 gün işlev dönüş değeri verir. Bu süreden daha uzun süre çalışan işlemlerde tarafından clock
döndürülen değere güvenmeyin. Uzun yılların geçen işlemlerini kaydetmek için 64 bit time
işlevini veya Windows QueryPerformanceCounter
işlevini kullanabilirsiniz.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
clock |
<time.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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
Ayrıca bkz.
Zaman yönetimi
difftime
, _difftime32
, _difftime64
time
, _time32
, _time64