clock() - プロセッサー時間の判別
標準
標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
形式
#include <time.h>
clock_t clock(void);
機能説明
プログラムの起動に関連するインプリメンテーションで 定義された時間枠の開始以降、プログラムが使用した プロセッサー時間を概算します。プログラムで使用された時間を測るには、プログラムの先頭 で clock() 関数を呼び出し、その戻り値を、その後の clock() の呼び出し で戻った値から減算してください。次に、秒単位の時間を知るには、clock() で戻った値 を CLOCKS_PER_SEC で割ります。
プログラムの中に system() 関数を使用する場合、プログラムの時間 計測の際に clock() を使用しないでください。system() を呼び出すと クロックが再設定されることがあるためです。
マルチスレッド POSIX C アプリケーションでは、POSIX.4a ドラフト標準 に基づいた関数を使用してスレッドを作成する場合、clock() 関数は、スレッドのスコープに入ります。
戻り値
時間が有効かつ提示可能な場合、clock() は計算値を戻します。
正常に実行されなかった場合、clock() は、(clock_t)-1 を戻します。MVS™/ESA バージョン 3 リリース 1 修正レベル 2 (またはそれ以前の) システムで STIMER REAL TQE を使用して実行中のときに、clock() は、-1 を戻すことがあります。
#pragma map ( clock(), "@@OCLCK")
このプラグマのために、アプリケーションを実行する と、1000000 CLOCKS_PER_SEC の単位で clock_t 値を戻す XPG4 版 の clock() に、アプリケーションはアクセスしようとします。XPG4 版の clock() を使用できるのは、アプリケーションの実行のため に POSIX(ON) を指定した場合だけです。
プログラムをコンパイルし、さらに、POSIX(OFF) を指定して アプリケーションを実行するとき、_XOPEN_SOURCE また は _XOPEN_SOURCE_EXTENDED が定義されている と、clock() は、(clock_t)-1 を戻します。
アプリケーションのコンパイル時に _XOPEN_SOURCE また は _XOPEN_SOURCE_EXTENDED のどちらも定義されていない 場合、CLOCKS_PER_SEC の実在の C/370 値が使用され、アプリケーション での clock() 呼び出しが clock() の実在の C/370 版にマップされます。この C/370 版の clock() は、アプリケーションが POSIX(ON) また は POSIX(OFF) のどちらで実行されても、実在の C/370 CLOCKS_PER_SEC 単位 で clock_t 値を戻します。
例
/* This example prints the time elapsed since the program was invoked. */
#include <time.h>
#include <stdio.h>
double time1, timedif; /* use doubles to show small values */
int main(void)
{
time1 = (double) clock(); /* get initial time */
time1 = time1 / CLOCKS_PER_SEC; /* in seconds */
⋮
/* call clock a second time */
timedif = ( ((double) clock()) / CLOCKS_PER_SEC) - time1;
printf("The elapsed time is %f seconds¥n", timedif);
}