clock
呼び出しプロセスにかかったウォール クロック時間を計算します。
構文
clock_t clock( void );
戻り値
プロセスの開始時の CRT の初期化からの経過時間 (CLOCKS_PER_SEC
単位/秒で計測)。 経過時間を計測できない場合や、clock_t
型として記録できる正の最大期間を超えた場合、関数は値 (clock_t)(-1)
を返します。
解説
clock
関数は、プロセス開始時の CRT の初期化から経過したウォール クロック時間を示します。 この関数は、NET CPU 時間を戻り値として指定する ISO C に厳密に準拠していません。 CPU 時間を取得するには、Win32 GetProcessTimes
関数を使用します。 秒単位で経過時間を求めるには、clock
関数によって返された値をマクロ CLOCKS_PER_SEC
で除算します。
十分な時間がある場合、clock
から返される値は clock_t
の正の最大値を超える可能性があります。 プロセスの実行時間が長い場合、clock
から返される値は常に (clock_t)(-1)
となります。これは、ISO C99 (7.23.2.1) と ISO C11 標準 (7.27.2.1) で指定されています。 Microsoft では clock_t
を long
(符号付き 32 ビット整数) として実装しており、CLOCKS_PER_SEC
マクロは 1000 として定義されています。 このマクロは、最大 clock
関数の戻り値として 2147483.647 秒 (約 24.8 日) を返します。 この時間より長く実行されているプロセスで clock
によって返される値に依存しないでください。 64 ビット time
関数または Windows QueryPerformanceCounter
関数を使用して、長年のプロセス経過時間を記録できます。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
clock |
<time.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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
関連項目
時間管理
difftime
、 _difftime32
、 _difftime64
time
、 _time32
、 _time64