呼び出しプロセスにかかったウォール クロック時間を計算します。Calculates the wall-clock time used by the calling process.


clock_t clock( void );

戻り値Return Value

プロセスの開始時の CRT 初期化からの経過時間。1秒あたりのCLOCKS_PER_SEC単位で測定されます。The elapsed time since the CRT initialization at the start of the process, measured in CLOCKS_PER_SEC units per second. 経過時間が使用できない場合、またはclock_t型として記録できる最大の正の時間を超えた場合、 (clock_t)(-1)関数は値を返します。If the elapsed time is unavailable or has exceeded the maximum positive time that can be recorded as a clock_t type, the function returns the value (clock_t)(-1).


Clock関数は、プロセスの開始時に CRT の初期化が行われてから経過したウォールクロックの時間を示します。The clock function tells how much wall-clock time has passed since the CRT initialization during process start. この関数は、厳密には ISO C (正味の CPU 時間を戻り値にすることが規定されている) に準拠していないことに注意してください。Note that this function does not strictly conform to ISO C, which specifies net CPU time as the return value. CPU 時間を取得するには、Win32 の GetProcessTimes 関数を使用します。To obtain CPU times, use the Win32 GetProcessTimes function. 経過時間を秒単位で確認するには、 clock関数によって返された値をマクロCLOCKS_PER_SECで除算します。To determine the elapsed time in seconds, divide the value returned by the clock function by the macro CLOCKS_PER_SEC.

十分な時間があれば、 clockによって返される値は、 clock_tの最大正の値を超える可能性があります。Given enough time, the value returned by clock can exceed the maximum positive value of clock_t. プロセスの実行時間が長い場合、 clockによって返される(clock_t)(-1)値は、iso C99 標準 ( および iso C11 standard ( で指定されているように、常にになります。When the process has run longer, the value returned by clock is always (clock_t)(-1), as specified by the ISO C99 standard ( and ISO C11 standard ( Microsoft はclock_t を、符号付き32ビット整数として実装し、 CLOCKS_PER_SECマクロは1000として定義されています。Microsoft implements clock_t as a long, a signed 32-bit integer, and the CLOCKS_PER_SEC macro is defined as 1000. これにより、最大クロック関数の戻り値として2147483.647 秒 (約24.8 日) が返されます。This gives a maximum clock function return value of 2147483.647 seconds, or about 24.8 days. この時間を超えて実行されたプロセスでは、クロックによって返される値に依存しないでください。Do not rely on the value returned by clock in processes that have run for longer than this amount of time. 64ビット時刻関数または Windows queryperformancecounter関数を使用すると、多数の年のプロセス経過時間を記録できます。You can use the 64-bit time function or the Windows QueryPerformanceCounter function to record process elapsed times of many years.


ルーチンによって返される値Routine 必須ヘッダーRequired header
clockclock <time.h><time.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see 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 milliseconds.
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
Time to do 600000000 empty loops is 1.354 seconds

関連項目See also

時間管理Time Management
difftime、_difftime32、_difftime64difftime, _difftime32, _difftime64
time、_time32、_time64time, _time32, _time64